define(function(require, exports, module) {
    require("./jquery-plupload-queue.css");
    /**
	 * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
	 * v1.2.1
	 *
	 * Copyright 2013, Moxiecode Systems AB
	 * Released under GPL License.
	 *
	 * License: http://www.plupload.com/license
	 * Contributing: http://www.plupload.com/contributing
	 *
	 * Date: 2014-05-14
	 */
    !function(e, t) {
        "use strict";
        function n(e, t) {
            for (var n, i = [], r = 0; r < e.length; ++r) {
                if (n = s[e[r]] || o(e[r]), !n) throw "module definition dependecy not found: " + e[r];
                i.push(n);
            }
            t.apply(null, i);
        }
        function i(e, i, r) {
            if ("string" != typeof e) throw "invalid module definition, module id must be defined and be a string";
            if (i === t) throw "invalid module definition, dependencies must be specified";
            if (r === t) throw "invalid module definition, definition function must be specified";
            n(i, function() {
                s[e] = r.apply(null, arguments);
            });
        }
        function r(e) {
            return !!s[e];
        }
        function o(t) {
            for (var n = e, i = t.split(/[.\/]/), r = 0; r < i.length; ++r) {
                if (!n[i[r]]) return;
                n = n[i[r]];
            }
            return n;
        }
        function a(n) {
            for (var i = 0; i < n.length; i++) {
                for (var r = e, o = n[i], a = o.split(/[.\/]/), u = 0; u < a.length - 1; ++u) r[a[u]] === t && (r[a[u]] = {}), 
                r = r[a[u]];
                r[a[a.length - 1]] = s[o];
            }
        }
        var s = {}, u = "moxie/core/utils/Basic", c = "moxie/core/I18n", l = "moxie/core/utils/Mime", d = "moxie/core/utils/Env", f = "moxie/core/utils/Dom", h = "moxie/core/Exceptions", p = "moxie/core/EventTarget", m = "moxie/core/utils/Encode", g = "moxie/runtime/Runtime", v = "moxie/runtime/RuntimeClient", y = "moxie/file/Blob", w = "moxie/file/File", E = "moxie/file/FileInput", _ = "moxie/file/FileDrop", x = "moxie/runtime/RuntimeTarget", b = "moxie/file/FileReader", R = "moxie/core/utils/Url", T = "moxie/file/FileReaderSync", A = "moxie/xhr/FormData", S = "moxie/xhr/XMLHttpRequest", O = "moxie/runtime/Transporter", I = "moxie/image/Image", D = "moxie/runtime/html5/Runtime", N = "moxie/runtime/html5/file/Blob", L = "moxie/core/utils/Events", M = "moxie/runtime/html5/file/FileInput", C = "moxie/runtime/html5/file/FileDrop", F = "moxie/runtime/html5/file/FileReader", H = "moxie/runtime/html5/xhr/XMLHttpRequest", P = "moxie/runtime/html5/utils/BinaryReader", k = "moxie/runtime/html5/image/JPEGHeaders", U = "moxie/runtime/html5/image/ExifParser", B = "moxie/runtime/html5/image/JPEG", z = "moxie/runtime/html5/image/PNG", G = "moxie/runtime/html5/image/ImageInfo", q = "moxie/runtime/html5/image/MegaPixel", X = "moxie/runtime/html5/image/Image", j = "moxie/runtime/flash/Runtime", V = "moxie/runtime/flash/file/Blob", W = "moxie/runtime/flash/file/FileInput", Y = "moxie/runtime/flash/file/FileReader", $ = "moxie/runtime/flash/file/FileReaderSync", J = "moxie/runtime/flash/xhr/XMLHttpRequest", Z = "moxie/runtime/flash/runtime/Transporter", K = "moxie/runtime/flash/image/Image", Q = "moxie/runtime/silverlight/Runtime", et = "moxie/runtime/silverlight/file/Blob", tt = "moxie/runtime/silverlight/file/FileInput", nt = "moxie/runtime/silverlight/file/FileDrop", it = "moxie/runtime/silverlight/file/FileReader", rt = "moxie/runtime/silverlight/file/FileReaderSync", ot = "moxie/runtime/silverlight/xhr/XMLHttpRequest", at = "moxie/runtime/silverlight/runtime/Transporter", st = "moxie/runtime/silverlight/image/Image", ut = "moxie/runtime/html4/Runtime", ct = "moxie/runtime/html4/file/FileInput", lt = "moxie/runtime/html4/file/FileReader", dt = "moxie/runtime/html4/xhr/XMLHttpRequest", ft = "moxie/runtime/html4/image/Image";
        i(u, [], function() {
            var e = function(e) {
                var t;
                return e === t ? "undefined" : null === e ? "null" : e.nodeType ? "node" : {}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase();
            }, t = function(i) {
                var r;
                return n(arguments, function(o, s) {
                    s > 0 && n(o, function(n, o) {
                        n !== r && (e(i[o]) === e(n) && ~a(e(n), [ "array", "object" ]) ? t(i[o], n) : i[o] = n);
                    });
                }), i;
            }, n = function(e, t) {
                var n, i, r, o;
                if (e) {
                    try {
                        n = e.length;
                    } catch (a) {
                        n = o;
                    }
                    if (n === o) {
                        for (i in e) if (e.hasOwnProperty(i) && t(e[i], i) === !1) return;
                    } else for (r = 0; n > r; r++) if (t(e[r], r) === !1) return;
                }
            }, i = function(t) {
                var n;
                if (!t || "object" !== e(t)) return !0;
                for (n in t) return !1;
                return !0;
            }, r = function(t, n) {
                function i(r) {
                    "function" === e(t[r]) && t[r](function(e) {
                        ++r < o && !e ? i(r) : n(e);
                    });
                }
                var r = 0, o = t.length;
                "function" !== e(n) && (n = function() {}), t && t.length || n(), i(r);
            }, o = function(e, t) {
                var i = 0, r = e.length, o = new Array(r);
                n(e, function(e, n) {
                    e(function(e) {
                        if (e) return t(e);
                        var a = [].slice.call(arguments);
                        a.shift(), o[n] = a, i++, i === r && (o.unshift(null), t.apply(this, o));
                    });
                });
            }, a = function(e, t) {
                if (t) {
                    if (Array.prototype.indexOf) return Array.prototype.indexOf.call(t, e);
                    for (var n = 0, i = t.length; i > n; n++) if (t[n] === e) return n;
                }
                return -1;
            }, s = function(t, n) {
                var i = [];
                "array" !== e(t) && (t = [ t ]), "array" !== e(n) && (n = [ n ]);
                for (var r in t) -1 === a(t[r], n) && i.push(t[r]);
                return i.length ? i : !1;
            }, u = function(e, t) {
                var i = [];
                return n(e, function(e) {
                    -1 !== a(e, t) && i.push(e);
                }), i.length ? i : null;
            }, c = function(e) {
                var t, n = [];
                for (t = 0; t < e.length; t++) n[t] = e[t];
                return n;
            }, l = function() {
                var e = 0;
                return function(t) {
                    var n = new Date().getTime().toString(32), i;
                    for (i = 0; 5 > i; i++) n += Math.floor(65535 * Math.random()).toString(32);
                    return (t || "o_") + n + (e++).toString(32);
                };
            }(), d = function(e) {
                return e ? String.prototype.trim ? String.prototype.trim.call(e) : e.toString().replace(/^\s*/, "").replace(/\s*$/, "") : e;
            }, f = function(e) {
                if ("string" != typeof e) return e;
                var t = {
                    t: 1099511627776,
                    g: 1073741824,
                    m: 1048576,
                    k: 1024
                }, n;
                return e = /^([0-9]+)([mgk]?)$/.exec(e.toLowerCase().replace(/[^0-9mkg]/g, "")), 
                n = e[2], e = +e[1], t.hasOwnProperty(n) && (e *= t[n]), e;
            };
            return {
                guid: l,
                typeOf: e,
                extend: t,
                each: n,
                isEmptyObj: i,
                inSeries: r,
                inParallel: o,
                inArray: a,
                arrayDiff: s,
                arrayIntersect: u,
                toArray: c,
                trim: d,
                parseSizeStr: f
            };
        }), i(c, [ u ], function(e) {
            var t = {};
            return {
                addI18n: function(n) {
                    return e.extend(t, n);
                },
                translate: function(e) {
                    return t[e] || e;
                },
                _: function(e) {
                    return this.translate(e);
                },
                sprintf: function(t) {
                    var n = [].slice.call(arguments, 1);
                    return t.replace(/%[a-z]/g, function() {
                        var t = n.shift();
                        return "undefined" !== e.typeOf(t) ? t : "";
                    });
                }
            };
        }), i(l, [ u, c ], function(e, t) {
            var n = "application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe", i = {
                mimes: {},
                extensions: {},
                addMimeType: function(e) {
                    var t = e.split(/,/), n, i, r;
                    for (n = 0; n < t.length; n += 2) {
                        for (r = t[n + 1].split(/ /), i = 0; i < r.length; i++) this.mimes[r[i]] = t[n];
                        this.extensions[t[n]] = r;
                    }
                },
                extList2mimes: function(t, n) {
                    var i = this, r, o, a, s, u = [];
                    for (o = 0; o < t.length; o++) for (r = t[o].extensions.split(/\s*,\s*/), a = 0; a < r.length; a++) {
                        if ("*" === r[a]) return [];
                        if (s = i.mimes[r[a]]) -1 === e.inArray(s, u) && u.push(s); else {
                            if (!n || !/^\w+$/.test(r[a])) return [];
                            u.push("." + r[a]);
                        }
                    }
                    return u;
                },
                mimes2exts: function(t) {
                    var n = this, i = [];
                    return e.each(t, function(t) {
                        if ("*" === t) return i = [], !1;
                        var r = t.match(/^(\w+)\/(\*|\w+)$/);
                        r && ("*" === r[2] ? e.each(n.extensions, function(e, t) {
                            new RegExp("^" + r[1] + "/").test(t) && [].push.apply(i, n.extensions[t]);
                        }) : n.extensions[t] && [].push.apply(i, n.extensions[t]));
                    }), i;
                },
                mimes2extList: function(n) {
                    var i = [], r = [];
                    return "string" === e.typeOf(n) && (n = e.trim(n).split(/\s*,\s*/)), r = this.mimes2exts(n), 
                    i.push({
                        title: t.translate("Files"),
                        extensions: r.length ? r.join(",") : "*"
                    }), i.mimes = n, i;
                },
                getFileExtension: function(e) {
                    var t = e && e.match(/\.([^.]+)$/);
                    return t ? t[1].toLowerCase() : "";
                },
                getFileMime: function(e) {
                    return this.mimes[this.getFileExtension(e)] || "";
                }
            };
            return i.addMimeType(n), i;
        }), i(d, [ u ], function(e) {
            function t(e, t, n) {
                var i = 0, r = 0, o = 0, a = {
                    dev: -6,
                    alpha: -5,
                    a: -5,
                    beta: -4,
                    b: -4,
                    RC: -3,
                    rc: -3,
                    "#": -2,
                    p: 1,
                    pl: 1
                }, s = function(e) {
                    return e = ("" + e).replace(/[_\-+]/g, "."), e = e.replace(/([^.\d]+)/g, ".$1.").replace(/\.{2,}/g, "."), 
                    e.length ? e.split(".") : [ -8 ];
                }, u = function(e) {
                    return e ? isNaN(e) ? a[e] || -7 : parseInt(e, 10) : 0;
                };
                for (e = s(e), t = s(t), r = Math.max(e.length, t.length), i = 0; r > i; i++) if (e[i] != t[i]) {
                    if (e[i] = u(e[i]), t[i] = u(t[i]), e[i] < t[i]) {
                        o = -1;
                        break;
                    }
                    if (e[i] > t[i]) {
                        o = 1;
                        break;
                    }
                }
                if (!n) return o;
                switch (n) {
                  case ">":
                  case "gt":
                    return o > 0;

                  case ">=":
                  case "ge":
                    return o >= 0;

                  case "<=":
                  case "le":
                    return 0 >= o;

                  case "==":
                  case "=":
                  case "eq":
                    return 0 === o;

                  case "<>":
                  case "!=":
                  case "ne":
                    return 0 !== o;

                  case "":
                  case "<":
                  case "lt":
                    return 0 > o;

                  default:
                    return null;
                }
            }
            var n = function(e) {
                var t = "", n = "?", i = "function", r = "undefined", o = "object", a = "major", s = "model", u = "name", c = "type", l = "vendor", d = "version", f = "architecture", h = "console", p = "mobile", m = "tablet", g = {
                    has: function(e, t) {
                        return -1 !== t.toLowerCase().indexOf(e.toLowerCase());
                    },
                    lowerize: function(e) {
                        return e.toLowerCase();
                    }
                }, v = {
                    rgx: function() {
                        for (var t, n = 0, a, s, u, c, l, d, f = arguments; n < f.length; n += 2) {
                            var h = f[n], p = f[n + 1];
                            if (typeof t === r) {
                                t = {};
                                for (u in p) c = p[u], typeof c === o ? t[c[0]] = e : t[c] = e;
                            }
                            for (a = s = 0; a < h.length; a++) if (l = h[a].exec(this.getUA())) {
                                for (u = 0; u < p.length; u++) d = l[++s], c = p[u], typeof c === o && c.length > 0 ? 2 == c.length ? t[c[0]] = typeof c[1] == i ? c[1].call(this, d) : c[1] : 3 == c.length ? t[c[0]] = typeof c[1] !== i || c[1].exec && c[1].test ? d ? d.replace(c[1], c[2]) : e : d ? c[1].call(this, d, c[2]) : e : 4 == c.length && (t[c[0]] = d ? c[3].call(this, d.replace(c[1], c[2])) : e) : t[c] = d ? d : e;
                                break;
                            }
                            if (l) break;
                        }
                        return t;
                    },
                    str: function(t, i) {
                        for (var r in i) if (typeof i[r] === o && i[r].length > 0) {
                            for (var a = 0; a < i[r].length; a++) if (g.has(i[r][a], t)) return r === n ? e : r;
                        } else if (g.has(i[r], t)) return r === n ? e : r;
                        return t;
                    }
                }, y = {
                    browser: {
                        oldsafari: {
                            major: {
                                1: [ "/8", "/1", "/3" ],
                                2: "/4",
                                "?": "/"
                            },
                            version: {
                                "1.0": "/8",
                                1.2: "/1",
                                1.3: "/3",
                                "2.0": "/412",
                                "2.0.2": "/416",
                                "2.0.3": "/417",
                                "2.0.4": "/419",
                                "?": "/"
                            }
                        }
                    },
                    device: {
                        sprint: {
                            model: {
                                "Evo Shift 4G": "7373KT"
                            },
                            vendor: {
                                HTC: "APA",
                                Sprint: "Sprint"
                            }
                        }
                    },
                    os: {
                        windows: {
                            version: {
                                ME: "4.90",
                                "NT 3.11": "NT3.51",
                                "NT 4.0": "NT4.0",
                                2e3: "NT 5.0",
                                XP: [ "NT 5.1", "NT 5.2" ],
                                Vista: "NT 6.0",
                                7: "NT 6.1",
                                8: "NT 6.2",
                                8.1: "NT 6.3",
                                RT: "ARM"
                            }
                        }
                    }
                }, w = {
                    browser: [ [ /(opera\smini)\/((\d+)?[\w\.-]+)/i, /(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i, /(opera).+version\/((\d+)?[\w\.]+)/i, /(opera)[\/\s]+((\d+)?[\w\.]+)/i ], [ u, d, a ], [ /\s(opr)\/((\d+)?[\w\.]+)/i ], [ [ u, "Opera" ], d, a ], [ /(kindle)\/((\d+)?[\w\.]+)/i, /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i, /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i, /(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i, /(rekonq)((?:\/)[\w\.]+)*/i, /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i ], [ u, d, a ], [ /(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i ], [ [ u, "IE" ], d, a ], [ /(yabrowser)\/((\d+)?[\w\.]+)/i ], [ [ u, "Yandex" ], d, a ], [ /(comodo_dragon)\/((\d+)?[\w\.]+)/i ], [ [ u, /_/g, " " ], d, a ], [ /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i ], [ u, d, a ], [ /(dolfin)\/((\d+)?[\w\.]+)/i ], [ [ u, "Dolphin" ], d, a ], [ /((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i ], [ [ u, "Chrome" ], d, a ], [ /((?:android.+))version\/((\d+)?[\w\.]+)\smobile\ssafari/i ], [ [ u, "Android Browser" ], d, a ], [ /version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i ], [ d, a, [ u, "Mobile Safari" ] ], [ /version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i ], [ d, a, u ], [ /webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i ], [ u, [ a, v.str, y.browser.oldsafari.major ], [ d, v.str, y.browser.oldsafari.version ] ], [ /(konqueror)\/((\d+)?[\w\.]+)/i, /(webkit|khtml)\/((\d+)?[\w\.]+)/i ], [ u, d, a ], [ /(navigator|netscape)\/((\d+)?[\w\.-]+)/i ], [ [ u, "Netscape" ], d, a ], [ /(swiftfox)/i, /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i, /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i, /(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i, /(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i, /(links)\s\(((\d+)?[\w\.]+)/i, /(gobrowser)\/?((\d+)?[\w\.]+)*/i, /(ice\s?browser)\/v?((\d+)?[\w\._]+)/i, /(mosaic)[\/\s]((\d+)?[\w\.]+)/i ], [ u, d, a ] ],
                    engine: [ [ /(presto)\/([\w\.]+)/i, /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, /(icab)[\/\s]([23]\.[\d\.]+)/i ], [ u, d ], [ /rv\:([\w\.]+).*(gecko)/i ], [ d, u ] ],
                    os: [ [ /(windows)\snt\s6\.2;\s(arm)/i, /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i ], [ u, [ d, v.str, y.os.windows.version ] ], [ /(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i ], [ [ u, "Windows" ], [ d, v.str, y.os.windows.version ] ], [ /\((bb)(10);/i ], [ [ u, "BlackBerry" ], d ], [ /(blackberry)\w*\/?([\w\.]+)*/i, /(tizen)\/([\w\.]+)/i, /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i ], [ u, d ], [ /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i ], [ [ u, "Symbian" ], d ], [ /mozilla.+\(mobile;.+gecko.+firefox/i ], [ [ u, "Firefox OS" ], d ], [ /(nintendo|playstation)\s([wids3portablevu]+)/i, /(mint)[\/\s\(]?(\w+)*/i, /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i, /(hurd|linux)\s?([\w\.]+)*/i, /(gnu)\s?([\w\.]+)*/i ], [ u, d ], [ /(cros)\s[\w]+\s([\w\.]+\w)/i ], [ [ u, "Chromium OS" ], d ], [ /(sunos)\s?([\w\.]+\d)*/i ], [ [ u, "Solaris" ], d ], [ /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i ], [ u, d ], [ /(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i ], [ [ u, "iOS" ], [ d, /_/g, "." ] ], [ /(mac\sos\sx)\s?([\w\s\.]+\w)*/i ], [ u, [ d, /_/g, "." ] ], [ /(haiku)\s(\w+)/i, /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, /(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i, /(unix)\s?([\w\.]+)*/i ], [ u, d ] ]
                }, E = function(e) {
                    var n = e || (window && window.navigator && window.navigator.userAgent ? window.navigator.userAgent : t);
                    this.getBrowser = function() {
                        return v.rgx.apply(this, w.browser);
                    }, this.getEngine = function() {
                        return v.rgx.apply(this, w.engine);
                    }, this.getOS = function() {
                        return v.rgx.apply(this, w.os);
                    }, this.getResult = function() {
                        return {
                            ua: this.getUA(),
                            browser: this.getBrowser(),
                            engine: this.getEngine(),
                            os: this.getOS()
                        };
                    }, this.getUA = function() {
                        return n;
                    }, this.setUA = function(e) {
                        return n = e, this;
                    }, this.setUA(n);
                };
                return new E().getResult();
            }(), i = function() {
                var t = {
                    define_property: function() {
                        return !1;
                    }(),
                    create_canvas: function() {
                        var e = document.createElement("canvas");
                        return !(!e.getContext || !e.getContext("2d"));
                    }(),
                    return_response_type: function(t) {
                        try {
                            if (-1 !== e.inArray(t, [ "", "text", "document" ])) return !0;
                            if (window.XMLHttpRequest) {
                                var n = new XMLHttpRequest();
                                if (n.open("get", "/"), "responseType" in n) return n.responseType = t, n.responseType !== t ? !1 : !0;
                            }
                        } catch (i) {}
                        return !1;
                    },
                    use_data_uri: function() {
                        var e = new Image();
                        return e.onload = function() {
                            t.use_data_uri = 1 === e.width && 1 === e.height;
                        }, setTimeout(function() {
                            e.src = "";
                        }, 1), !1;
                    }(),
                    use_data_uri_over32kb: function() {
                        return t.use_data_uri && ("IE" !== r.browser || r.version >= 9);
                    },
                    use_data_uri_of: function(e) {
                        return t.use_data_uri && 33e3 > e || t.use_data_uri_over32kb();
                    },
                    use_fileinput: function() {
                        var e = document.createElement("input");
                        return e.setAttribute("type", "file"), !e.disabled;
                    }
                };
                return function(n) {
                    var i = [].slice.call(arguments);
                    return i.shift(), "function" === e.typeOf(t[n]) ? t[n].apply(this, i) : !!t[n];
                };
            }(), r = {
                can: i,
                browser: n.browser.name,
                version: parseFloat(n.browser.major),
                os: n.os.name,
                osVersion: n.os.version,
                verComp: t,
                swf_url: "../flash/Moxie.swf",
                xap_url: "../silverlight/Moxie.xap",
                global_event_dispatcher: "moxie.core.EventTarget.instance.dispatchEvent"
            };
            return r.OS = r.os, r;
        }), i(f, [ d ], function(e) {
            var t = function(e) {
                return "string" != typeof e ? e : document.getElementById(e);
            }, n = function(e, t) {
                if (!e.className) return !1;
                var n = new RegExp("(^|\\s+)" + t + "(\\s+|$)");
                return n.test(e.className);
            }, i = function(e, t) {
                n(e, t) || (e.className = e.className ? e.className.replace(/\s+$/, "") + " " + t : t);
            }, r = function(e, t) {
                if (e.className) {
                    var n = new RegExp("(^|\\s+)" + t + "(\\s+|$)");
                    e.className = e.className.replace(n, function(e, t, n) {
                        return " " === t && " " === n ? " " : "";
                    });
                }
            }, o = function(e, t) {
                return e.currentStyle ? e.currentStyle[t] : window.getComputedStyle ? window.getComputedStyle(e, null)[t] : void 0;
            }, a = function(t, n) {
                function i(e) {
                    var t, n, i = 0, r = 0;
                    return e && (n = e.getBoundingClientRect(), t = "CSS1Compat" === s.compatMode ? s.documentElement : s.body, 
                    i = n.left + t.scrollLeft, r = n.top + t.scrollTop), {
                        x: i,
                        y: r
                    };
                }
                var r = 0, o = 0, a, s = document, u, c;
                if (t = t, n = n || s.body, t && t.getBoundingClientRect && "IE" === e.browser && (!s.documentMode || s.documentMode < 8)) return u = i(t), 
                c = i(n), {
                    x: u.x - c.x,
                    y: u.y - c.y
                };
                for (a = t; a && a != n && a.nodeType; ) r += a.offsetLeft || 0, o += a.offsetTop || 0, 
                a = a.offsetParent;
                for (a = t.parentNode; a && a != n && a.nodeType; ) r -= a.scrollLeft || 0, o -= a.scrollTop || 0, 
                a = a.parentNode;
                return {
                    x: r,
                    y: o
                };
            }, s = function(e) {
                return {
                    w: e.offsetWidth || e.clientWidth,
                    h: e.offsetHeight || e.clientHeight
                };
            };
            return {
                get: t,
                hasClass: n,
                addClass: i,
                removeClass: r,
                getStyle: o,
                getPos: a,
                getSize: s
            };
        }), i(h, [ u ], function(e) {
            function t(e, t) {
                var n;
                for (n in e) if (e[n] === t) return n;
                return null;
            }
            return {
                RuntimeError: function() {
                    function n(e) {
                        this.code = e, this.name = t(i, e), this.message = this.name + ": RuntimeError " + this.code;
                    }
                    var i = {
                        NOT_INIT_ERR: 1,
                        NOT_SUPPORTED_ERR: 9,
                        JS_ERR: 4
                    };
                    return e.extend(n, i), n.prototype = Error.prototype, n;
                }(),
                OperationNotAllowedException: function() {
                    function t(e) {
                        this.code = e, this.name = "OperationNotAllowedException";
                    }
                    return e.extend(t, {
                        NOT_ALLOWED_ERR: 1
                    }), t.prototype = Error.prototype, t;
                }(),
                ImageError: function() {
                    function n(e) {
                        this.code = e, this.name = t(i, e), this.message = this.name + ": ImageError " + this.code;
                    }
                    var i = {
                        WRONG_FORMAT: 1,
                        MAX_RESOLUTION_ERR: 2
                    };
                    return e.extend(n, i), n.prototype = Error.prototype, n;
                }(),
                FileException: function() {
                    function n(e) {
                        this.code = e, this.name = t(i, e), this.message = this.name + ": FileException " + this.code;
                    }
                    var i = {
                        NOT_FOUND_ERR: 1,
                        SECURITY_ERR: 2,
                        ABORT_ERR: 3,
                        NOT_READABLE_ERR: 4,
                        ENCODING_ERR: 5,
                        NO_MODIFICATION_ALLOWED_ERR: 6,
                        INVALID_STATE_ERR: 7,
                        SYNTAX_ERR: 8
                    };
                    return e.extend(n, i), n.prototype = Error.prototype, n;
                }(),
                DOMException: function() {
                    function n(e) {
                        this.code = e, this.name = t(i, e), this.message = this.name + ": DOMException " + this.code;
                    }
                    var i = {
                        INDEX_SIZE_ERR: 1,
                        DOMSTRING_SIZE_ERR: 2,
                        HIERARCHY_REQUEST_ERR: 3,
                        WRONG_DOCUMENT_ERR: 4,
                        INVALID_CHARACTER_ERR: 5,
                        NO_DATA_ALLOWED_ERR: 6,
                        NO_MODIFICATION_ALLOWED_ERR: 7,
                        NOT_FOUND_ERR: 8,
                        NOT_SUPPORTED_ERR: 9,
                        INUSE_ATTRIBUTE_ERR: 10,
                        INVALID_STATE_ERR: 11,
                        SYNTAX_ERR: 12,
                        INVALID_MODIFICATION_ERR: 13,
                        NAMESPACE_ERR: 14,
                        INVALID_ACCESS_ERR: 15,
                        VALIDATION_ERR: 16,
                        TYPE_MISMATCH_ERR: 17,
                        SECURITY_ERR: 18,
                        NETWORK_ERR: 19,
                        ABORT_ERR: 20,
                        URL_MISMATCH_ERR: 21,
                        QUOTA_EXCEEDED_ERR: 22,
                        TIMEOUT_ERR: 23,
                        INVALID_NODE_TYPE_ERR: 24,
                        DATA_CLONE_ERR: 25
                    };
                    return e.extend(n, i), n.prototype = Error.prototype, n;
                }(),
                EventException: function() {
                    function t(e) {
                        this.code = e, this.name = "EventException";
                    }
                    return e.extend(t, {
                        UNSPECIFIED_EVENT_TYPE_ERR: 0
                    }), t.prototype = Error.prototype, t;
                }()
            };
        }), i(p, [ h, u ], function(e, t) {
            function n() {
                var n = {};
                t.extend(this, {
                    uid: null,
                    init: function() {
                        this.uid || (this.uid = t.guid("uid_"));
                    },
                    addEventListener: function(e, i, r, o) {
                        var a = this, s;
                        return e = t.trim(e), /\s/.test(e) ? void t.each(e.split(/\s+/), function(e) {
                            a.addEventListener(e, i, r, o);
                        }) : (e = e.toLowerCase(), r = parseInt(r, 10) || 0, s = n[this.uid] && n[this.uid][e] || [], 
                        s.push({
                            fn: i,
                            priority: r,
                            scope: o || this
                        }), n[this.uid] || (n[this.uid] = {}), void (n[this.uid][e] = s));
                    },
                    hasEventListener: function(e) {
                        return e ? !(!n[this.uid] || !n[this.uid][e]) : !!n[this.uid];
                    },
                    removeEventListener: function(e, i) {
                        e = e.toLowerCase();
                        var r = n[this.uid] && n[this.uid][e], o;
                        if (r) {
                            if (i) {
                                for (o = r.length - 1; o >= 0; o--) if (r[o].fn === i) {
                                    r.splice(o, 1);
                                    break;
                                }
                            } else r = [];
                            r.length || (delete n[this.uid][e], t.isEmptyObj(n[this.uid]) && delete n[this.uid]);
                        }
                    },
                    removeAllEventListeners: function() {
                        n[this.uid] && delete n[this.uid];
                    },
                    dispatchEvent: function(i) {
                        var r, o, a, s, u = {}, c = !0, l;
                        if ("string" !== t.typeOf(i)) {
                            if (s = i, "string" !== t.typeOf(s.type)) throw new e.EventException(e.EventException.UNSPECIFIED_EVENT_TYPE_ERR);
                            i = s.type, s.total !== l && s.loaded !== l && (u.total = s.total, u.loaded = s.loaded), 
                            u.async = s.async || !1;
                        }
                        if (-1 !== i.indexOf("::") ? !function(e) {
                            r = e[0], i = e[1];
                        }(i.split("::")) : r = this.uid, i = i.toLowerCase(), o = n[r] && n[r][i]) {
                            o.sort(function(e, t) {
                                return t.priority - e.priority;
                            }), a = [].slice.call(arguments), a.shift(), u.type = i, a.unshift(u);
                            var d = [];
                            t.each(o, function(e) {
                                a[0].target = e.scope, d.push(u.async ? function(t) {
                                    setTimeout(function() {
                                        t(e.fn.apply(e.scope, a) === !1);
                                    }, 1);
                                } : function(t) {
                                    t(e.fn.apply(e.scope, a) === !1);
                                });
                            }), d.length && t.inSeries(d, function(e) {
                                c = !e;
                            });
                        }
                        return c;
                    },
                    bind: function() {
                        this.addEventListener.apply(this, arguments);
                    },
                    unbind: function() {
                        this.removeEventListener.apply(this, arguments);
                    },
                    unbindAll: function() {
                        this.removeAllEventListeners.apply(this, arguments);
                    },
                    trigger: function() {
                        return this.dispatchEvent.apply(this, arguments);
                    },
                    convertEventPropsToHandlers: function(e) {
                        var n;
                        "array" !== t.typeOf(e) && (e = [ e ]);
                        for (var i = 0; i < e.length; i++) n = "on" + e[i], "function" === t.typeOf(this[n]) ? this.addEventListener(e[i], this[n]) : "undefined" === t.typeOf(this[n]) && (this[n] = null);
                    }
                });
            }
            return n.instance = new n(), n;
        }), i(m, [], function() {
            var e = function(e) {
                return unescape(encodeURIComponent(e));
            }, t = function(e) {
                return decodeURIComponent(escape(e));
            }, n = function(e, n) {
                if ("function" == typeof window.atob) return n ? t(window.atob(e)) : window.atob(e);
                var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", r, o, a, s, u, c, l, d, f = 0, h = 0, p = "", m = [];
                if (!e) return e;
                e += "";
                do s = i.indexOf(e.charAt(f++)), u = i.indexOf(e.charAt(f++)), c = i.indexOf(e.charAt(f++)), 
                l = i.indexOf(e.charAt(f++)), d = s << 18 | u << 12 | c << 6 | l, r = d >> 16 & 255, 
                o = d >> 8 & 255, a = 255 & d, m[h++] = 64 == c ? String.fromCharCode(r) : 64 == l ? String.fromCharCode(r, o) : String.fromCharCode(r, o, a); while (f < e.length);
                return p = m.join(""), n ? t(p) : p;
            }, i = function(t, n) {
                if (n && e(t), "function" == typeof window.btoa) return window.btoa(t);
                var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", r, o, a, s, u, c, l, d, f = 0, h = 0, p = "", m = [];
                if (!t) return t;
                do r = t.charCodeAt(f++), o = t.charCodeAt(f++), a = t.charCodeAt(f++), d = r << 16 | o << 8 | a, 
                s = d >> 18 & 63, u = d >> 12 & 63, c = d >> 6 & 63, l = 63 & d, m[h++] = i.charAt(s) + i.charAt(u) + i.charAt(c) + i.charAt(l); while (f < t.length);
                p = m.join("");
                var g = t.length % 3;
                return (g ? p.slice(0, g - 3) : p) + "===".slice(g || 3);
            };
            return {
                utf8_encode: e,
                utf8_decode: t,
                atob: n,
                btoa: i
            };
        }), i(g, [ u, f, p ], function(e, t, n) {
            function i(n, r, a, s, u) {
                var c = this, l, d = e.guid(r + "_"), f = u || "browser";
                n = n || {}, o[d] = this, a = e.extend({
                    access_binary: !1,
                    access_image_binary: !1,
                    display_media: !1,
                    do_cors: !1,
                    drag_and_drop: !1,
                    filter_by_extension: !0,
                    resize_image: !1,
                    report_upload_progress: !1,
                    return_response_headers: !1,
                    return_response_type: !1,
                    return_status_code: !0,
                    send_custom_headers: !1,
                    select_file: !1,
                    select_folder: !1,
                    select_multiple: !0,
                    send_binary_string: !1,
                    send_browser_cookies: !0,
                    send_multipart: !0,
                    slice_blob: !1,
                    stream_upload: !1,
                    summon_file_dialog: !1,
                    upload_filesize: !0,
                    use_http_method: !0
                }, a), n.preferred_caps && (f = i.getMode(s, n.preferred_caps, f)), l = function() {
                    var t = {};
                    return {
                        exec: function(e, n, i, r) {
                            return l[n] && (t[e] || (t[e] = {
                                context: this,
                                instance: new l[n]()
                            }), t[e].instance[i]) ? t[e].instance[i].apply(this, r) : void 0;
                        },
                        removeInstance: function(e) {
                            delete t[e];
                        },
                        removeAllInstances: function() {
                            var n = this;
                            e.each(t, function(t, i) {
                                "function" === e.typeOf(t.instance.destroy) && t.instance.destroy.call(t.context), 
                                n.removeInstance(i);
                            });
                        }
                    };
                }(), e.extend(this, {
                    initialized: !1,
                    uid: d,
                    type: r,
                    mode: i.getMode(s, n.required_caps, f),
                    shimid: d + "_container",
                    clients: 0,
                    options: n,
                    can: function(t, n) {
                        var r = arguments[2] || a;
                        if ("string" === e.typeOf(t) && "undefined" === e.typeOf(n) && (t = i.parseCaps(t)), 
                        "object" === e.typeOf(t)) {
                            for (var o in t) if (!this.can(o, t[o], r)) return !1;
                            return !0;
                        }
                        return "function" === e.typeOf(r[t]) ? r[t].call(this, n) : n === r[t];
                    },
                    getShimContainer: function() {
                        var n, i = t.get(this.shimid);
                        return i || (n = this.options.container ? t.get(this.options.container) : document.body, 
                        i = document.createElement("div"), i.id = this.shimid, i.className = "moxie-shim moxie-shim-" + this.type, 
                        e.extend(i.style, {
                            position: "absolute",
                            top: "0px",
                            left: "0px",
                            width: "1px",
                            height: "1px",
                            overflow: "hidden"
                        }), n.appendChild(i), n = null), i;
                    },
                    getShim: function() {
                        return l;
                    },
                    shimExec: function(e, t) {
                        var n = [].slice.call(arguments, 2);
                        return c.getShim().exec.call(this, this.uid, e, t, n);
                    },
                    exec: function(e, t) {
                        var n = [].slice.call(arguments, 2);
                        return c[e] && c[e][t] ? c[e][t].apply(this, n) : c.shimExec.apply(this, arguments);
                    },
                    destroy: function() {
                        if (c) {
                            var e = t.get(this.shimid);
                            e && e.parentNode.removeChild(e), l && l.removeAllInstances(), this.unbindAll(), 
                            delete o[this.uid], this.uid = null, d = c = l = e = null;
                        }
                    }
                }), this.mode && n.required_caps && !this.can(n.required_caps) && (this.mode = !1);
            }
            var r = {}, o = {};
            return i.order = "html5,flash,silverlight,html4", i.getRuntime = function(e) {
                return o[e] ? o[e] : !1;
            }, i.addConstructor = function(e, t) {
                t.prototype = n.instance, r[e] = t;
            }, i.getConstructor = function(e) {
                return r[e] || null;
            }, i.getInfo = function(e) {
                var t = i.getRuntime(e);
                return t ? {
                    uid: t.uid,
                    type: t.type,
                    mode: t.mode,
                    can: function() {
                        return t.can.apply(t, arguments);
                    }
                } : null;
            }, i.parseCaps = function(t) {
                var n = {};
                return "string" !== e.typeOf(t) ? t || {} : (e.each(t.split(","), function(e) {
                    n[e] = !0;
                }), n);
            }, i.can = function(e, t) {
                var n, r = i.getConstructor(e), o;
                return r ? (n = new r({
                    required_caps: t
                }), o = n.mode, n.destroy(), !!o) : !1;
            }, i.thatCan = function(e, t) {
                var n = (t || i.order).split(/\s*,\s*/);
                for (var r in n) if (i.can(n[r], e)) return n[r];
                return null;
            }, i.getMode = function(t, n, i) {
                var r = null;
                if ("undefined" === e.typeOf(i) && (i = "browser"), n && !e.isEmptyObj(t)) {
                    if (e.each(n, function(n, i) {
                        if (t.hasOwnProperty(i)) {
                            var o = t[i](n);
                            if ("string" == typeof o && (o = [ o ]), r) {
                                if (!(r = e.arrayIntersect(r, o))) return r = !1;
                            } else r = o;
                        }
                    }), r) return -1 !== e.inArray(i, r) ? i : r[0];
                    if (r === !1) return !1;
                }
                return i;
            }, i.capTrue = function() {
                return !0;
            }, i.capFalse = function() {
                return !1;
            }, i.capTest = function(e) {
                return function() {
                    return !!e;
                };
            }, i;
        }), i(v, [ h, u, g ], function(e, t, n) {
            return function i() {
                var i;
                t.extend(this, {
                    connectRuntime: function(r) {
                        function o(t) {
                            var s, u;
                            return t.length ? (s = t.shift(), (u = n.getConstructor(s)) ? (i = new u(r), i.bind("Init", function() {
                                i.initialized = !0, setTimeout(function() {
                                    i.clients++, a.trigger("RuntimeInit", i);
                                }, 1);
                            }), i.bind("Error", function() {
                                i.destroy(), o(t);
                            }), i.mode ? void i.init() : void i.trigger("Error")) : void o(t)) : (a.trigger("RuntimeError", new e.RuntimeError(e.RuntimeError.NOT_INIT_ERR)), 
                            void (i = null));
                        }
                        var a = this, s;
                        if ("string" === t.typeOf(r) ? s = r : "string" === t.typeOf(r.ruid) && (s = r.ruid), 
                        s) {
                            if (i = n.getRuntime(s)) return i.clients++, i;
                            throw new e.RuntimeError(e.RuntimeError.NOT_INIT_ERR);
                        }
                        o((r.runtime_order || n.order).split(/\s*,\s*/));
                    },
                    getRuntime: function() {
                        return i && i.uid ? i : (i = null, null);
                    },
                    disconnectRuntime: function() {
                        i && --i.clients <= 0 && (i.destroy(), i = null);
                    }
                });
            };
        }), i(y, [ u, m, v ], function(e, t, n) {
            function i(o, a) {
                function s(t, n, o) {
                    var a, s = r[this.uid];
                    return "string" === e.typeOf(s) && s.length ? (a = new i(null, {
                        type: o,
                        size: n - t
                    }), a.detach(s.substr(t, a.size)), a) : null;
                }
                n.call(this), o && this.connectRuntime(o), a ? "string" === e.typeOf(a) && (a = {
                    data: a
                }) : a = {}, e.extend(this, {
                    uid: a.uid || e.guid("uid_"),
                    ruid: o,
                    size: a.size || 0,
                    type: a.type || "",
                    slice: function(e, t, n) {
                        return this.isDetached() ? s.apply(this, arguments) : this.getRuntime().exec.call(this, "Blob", "slice", this.getSource(), e, t, n);
                    },
                    getSource: function() {
                        return r[this.uid] ? r[this.uid] : null;
                    },
                    detach: function(e) {
                        this.ruid && (this.getRuntime().exec.call(this, "Blob", "destroy"), this.disconnectRuntime(), 
                        this.ruid = null), e = e || "";
                        var n = e.match(/^data:([^;]*);base64,/);
                        n && (this.type = n[1], e = t.atob(e.substring(e.indexOf("base64,") + 7))), this.size = e.length, 
                        r[this.uid] = e;
                    },
                    isDetached: function() {
                        return !this.ruid && "string" === e.typeOf(r[this.uid]);
                    },
                    destroy: function() {
                        this.detach(), delete r[this.uid];
                    }
                }), a.data ? this.detach(a.data) : r[this.uid] = a;
            }
            var r = {};
            return i;
        }), i(w, [ u, l, y ], function(e, t, n) {
            function i(i, r) {
                var o, a;
                if (r || (r = {}), a = r.type && "" !== r.type ? r.type : t.getFileMime(r.name), 
                r.name) o = r.name.replace(/\\/g, "/"), o = o.substr(o.lastIndexOf("/") + 1); else {
                    var s = a.split("/")[0];
                    o = e.guid(("" !== s ? s : "file") + "_"), t.extensions[a] && (o += "." + t.extensions[a][0]);
                }
                n.apply(this, arguments), e.extend(this, {
                    type: a || "",
                    name: o || e.guid("file_"),
                    lastModifiedDate: r.lastModifiedDate || new Date().toLocaleString()
                });
            }
            return i.prototype = n.prototype, i;
        }), i(E, [ u, l, f, h, p, c, w, g, v ], function(e, t, n, i, r, o, a, s, u) {
            function c(r) {
                var c = this, d, f, h;
                if (-1 !== e.inArray(e.typeOf(r), [ "string", "node" ]) && (r = {
                    browse_button: r
                }), f = n.get(r.browse_button), !f) throw new i.DOMException(i.DOMException.NOT_FOUND_ERR);
                h = {
                    accept: [ {
                        title: o.translate("All Files"),
                        extensions: "*"
                    } ],
                    name: "file",
                    multiple: !1,
                    required_caps: !1,
                    container: f.parentNode || document.body
                }, r = e.extend({}, h, r), "string" == typeof r.required_caps && (r.required_caps = s.parseCaps(r.required_caps)), 
                "string" == typeof r.accept && (r.accept = t.mimes2extList(r.accept)), d = n.get(r.container), 
                d || (d = document.body), "static" === n.getStyle(d, "position") && (d.style.position = "relative"), 
                d = f = null, u.call(c), e.extend(c, {
                    uid: e.guid("uid_"),
                    ruid: null,
                    shimid: null,
                    files: null,
                    init: function() {
                        c.convertEventPropsToHandlers(l), c.bind("RuntimeInit", function(t, i) {
                            c.ruid = i.uid, c.shimid = i.shimid, c.bind("Ready", function() {
                                c.trigger("Refresh");
                            }, 999), c.bind("Change", function() {
                                var t = i.exec.call(c, "FileInput", "getFiles");
                                c.files = [], e.each(t, function(e) {
                                    return 0 === e.size ? !0 : void c.files.push(new a(c.ruid, e));
                                });
                            }, 999), c.bind("Refresh", function() {
                                var t, o, a, s;
                                a = n.get(r.browse_button), s = n.get(i.shimid), a && (t = n.getPos(a, n.get(r.container)), 
                                o = n.getSize(a), s && e.extend(s.style, {
                                    top: t.y + "px",
                                    left: t.x + "px",
                                    width: o.w + "px",
                                    height: o.h + "px"
                                })), s = a = null;
                            }), i.exec.call(c, "FileInput", "init", r);
                        }), c.connectRuntime(e.extend({}, r, {
                            required_caps: {
                                select_file: !0
                            }
                        }));
                    },
                    disable: function(t) {
                        var n = this.getRuntime();
                        n && n.exec.call(this, "FileInput", "disable", "undefined" === e.typeOf(t) ? !0 : t);
                    },
                    refresh: function() {
                        c.trigger("Refresh");
                    },
                    destroy: function() {
                        var t = this.getRuntime();
                        t && (t.exec.call(this, "FileInput", "destroy"), this.disconnectRuntime()), "array" === e.typeOf(this.files) && e.each(this.files, function(e) {
                            e.destroy();
                        }), this.files = null;
                    }
                });
            }
            var l = [ "ready", "change", "cancel", "mouseenter", "mouseleave", "mousedown", "mouseup" ];
            return c.prototype = r.instance, c;
        }), i(_, [ c, f, h, u, w, v, p, l ], function(e, t, n, i, r, o, a, s) {
            function u(n) {
                var a = this, u;
                "string" == typeof n && (n = {
                    drop_zone: n
                }), u = {
                    accept: [ {
                        title: e.translate("All Files"),
                        extensions: "*"
                    } ],
                    required_caps: {
                        drag_and_drop: !0
                    }
                }, n = "object" == typeof n ? i.extend({}, u, n) : u, n.container = t.get(n.drop_zone) || document.body, 
                "static" === t.getStyle(n.container, "position") && (n.container.style.position = "relative"), 
                "string" == typeof n.accept && (n.accept = s.mimes2extList(n.accept)), o.call(a), 
                i.extend(a, {
                    uid: i.guid("uid_"),
                    ruid: null,
                    files: null,
                    init: function() {
                        a.convertEventPropsToHandlers(c), a.bind("RuntimeInit", function(e, t) {
                            a.ruid = t.uid, a.bind("Drop", function() {
                                var e = t.exec.call(a, "FileDrop", "getFiles");
                                a.files = [], i.each(e, function(e) {
                                    a.files.push(new r(a.ruid, e));
                                });
                            }, 999), t.exec.call(a, "FileDrop", "init", n), a.dispatchEvent("ready");
                        }), a.connectRuntime(n);
                    },
                    destroy: function() {
                        var e = this.getRuntime();
                        e && (e.exec.call(this, "FileDrop", "destroy"), this.disconnectRuntime()), this.files = null;
                    }
                });
            }
            var c = [ "ready", "dragenter", "dragleave", "drop", "error" ];
            return u.prototype = a.instance, u;
        }), i(x, [ u, v, p ], function(e, t, n) {
            function i() {
                this.uid = e.guid("uid_"), t.call(this), this.destroy = function() {
                    this.disconnectRuntime(), this.unbindAll();
                };
            }
            return i.prototype = n.instance, i;
        }), i(b, [ u, m, h, p, y, w, x ], function(e, t, n, i, r, o, a) {
            function s() {
                function i(e, i) {
                    function l(e) {
                        o.readyState = s.DONE, o.error = e, o.trigger("error"), d();
                    }
                    function d() {
                        c.destroy(), c = null, o.trigger("loadend");
                    }
                    function f(t) {
                        c.bind("Error", function(e, t) {
                            l(t);
                        }), c.bind("Progress", function(e) {
                            o.result = t.exec.call(c, "FileReader", "getResult"), o.trigger(e);
                        }), c.bind("Load", function(e) {
                            o.readyState = s.DONE, o.result = t.exec.call(c, "FileReader", "getResult"), o.trigger(e), 
                            d();
                        }), t.exec.call(c, "FileReader", "read", e, i);
                    }
                    if (c = new a(), this.convertEventPropsToHandlers(u), this.readyState === s.LOADING) return l(new n.DOMException(n.DOMException.INVALID_STATE_ERR));
                    if (this.readyState = s.LOADING, this.trigger("loadstart"), i instanceof r) if (i.isDetached()) {
                        var h = i.getSource();
                        switch (e) {
                          case "readAsText":
                          case "readAsBinaryString":
                            this.result = h;
                            break;

                          case "readAsDataURL":
                            this.result = "data:" + i.type + ";base64," + t.btoa(h);
                        }
                        this.readyState = s.DONE, this.trigger("load"), d();
                    } else f(c.connectRuntime(i.ruid)); else l(new n.DOMException(n.DOMException.NOT_FOUND_ERR));
                }
                var o = this, c;
                e.extend(this, {
                    uid: e.guid("uid_"),
                    readyState: s.EMPTY,
                    result: null,
                    error: null,
                    readAsBinaryString: function(e) {
                        i.call(this, "readAsBinaryString", e);
                    },
                    readAsDataURL: function(e) {
                        i.call(this, "readAsDataURL", e);
                    },
                    readAsText: function(e) {
                        i.call(this, "readAsText", e);
                    },
                    abort: function() {
                        this.result = null, -1 === e.inArray(this.readyState, [ s.EMPTY, s.DONE ]) && (this.readyState === s.LOADING && (this.readyState = s.DONE), 
                        c && c.getRuntime().exec.call(this, "FileReader", "abort"), this.trigger("abort"), 
                        this.trigger("loadend"));
                    },
                    destroy: function() {
                        this.abort(), c && (c.getRuntime().exec.call(this, "FileReader", "destroy"), c.disconnectRuntime()), 
                        o = c = null;
                    }
                });
            }
            var u = [ "loadstart", "progress", "load", "abort", "error", "loadend" ];
            return s.EMPTY = 0, s.LOADING = 1, s.DONE = 2, s.prototype = i.instance, s;
        }), i(R, [], function() {
            var e = function(t, n) {
                for (var i = [ "source", "scheme", "authority", "userInfo", "user", "pass", "host", "port", "relative", "path", "directory", "file", "query", "fragment" ], r = i.length, o = {
                    http: 80,
                    https: 443
                }, a = {}, s = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/, u = s.exec(t || ""); r--; ) u[r] && (a[i[r]] = u[r]);
                if (!a.scheme) {
                    n && "string" != typeof n || (n = e(n || document.location.href)), a.scheme = n.scheme, 
                    a.host = n.host, a.port = n.port;
                    var c = "";
                    /^[^\/]/.test(a.path) && (c = n.path, /(\/|\/[^\.]+)$/.test(c) ? c += "/" : c = c.replace(/\/[^\/]+$/, "/")), 
                    a.path = c + (a.path || "");
                }
                return a.port || (a.port = o[a.scheme] || 80), a.port = parseInt(a.port, 10), a.path || (a.path = "/"), 
                delete a.source, a;
            }, t = function(t) {
                var n = {
                    http: 80,
                    https: 443
                }, i = e(t);
                return i.scheme + "://" + i.host + (i.port !== n[i.scheme] ? ":" + i.port : "") + i.path + (i.query ? i.query : "");
            }, n = function(t) {
                function n(e) {
                    return [ e.scheme, e.host, e.port ].join("/");
                }
                return "string" == typeof t && (t = e(t)), n(e()) === n(t);
            };
            return {
                parseUrl: e,
                resolveUrl: t,
                hasSameOrigin: n
            };
        }), i(T, [ u, v, m ], function(e, t, n) {
            return function() {
                function i(e, t) {
                    if (!t.isDetached()) {
                        var i = this.connectRuntime(t.ruid).exec.call(this, "FileReaderSync", "read", e, t);
                        return this.disconnectRuntime(), i;
                    }
                    var r = t.getSource();
                    switch (e) {
                      case "readAsBinaryString":
                        return r;

                      case "readAsDataURL":
                        return "data:" + t.type + ";base64," + n.btoa(r);

                      case "readAsText":
                        for (var o = "", a = 0, s = r.length; s > a; a++) o += String.fromCharCode(r[a]);
                        return o;
                    }
                }
                t.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    readAsBinaryString: function(e) {
                        return i.call(this, "readAsBinaryString", e);
                    },
                    readAsDataURL: function(e) {
                        return i.call(this, "readAsDataURL", e);
                    },
                    readAsText: function(e) {
                        return i.call(this, "readAsText", e);
                    }
                });
            };
        }), i(A, [ h, u, y ], function(e, t, n) {
            function i() {
                var e, i = [];
                t.extend(this, {
                    append: function(r, o) {
                        var a = this, s = t.typeOf(o);
                        o instanceof n ? e = {
                            name: r,
                            value: o
                        } : "array" === s ? (r += "[]", t.each(o, function(e) {
                            a.append(r, e);
                        })) : "object" === s ? t.each(o, function(e, t) {
                            a.append(r + "[" + t + "]", e);
                        }) : "null" === s || "undefined" === s || "number" === s && isNaN(o) ? a.append(r, "false") : i.push({
                            name: r,
                            value: o.toString()
                        });
                    },
                    hasBlob: function() {
                        return !!this.getBlob();
                    },
                    getBlob: function() {
                        return e && e.value || null;
                    },
                    getBlobName: function() {
                        return e && e.name || null;
                    },
                    each: function(n) {
                        t.each(i, function(e) {
                            n(e.value, e.name);
                        }), e && n(e.value, e.name);
                    },
                    destroy: function() {
                        e = null, i = [];
                    }
                });
            }
            return i;
        }), i(S, [ u, h, p, m, R, g, x, y, T, A, d, l ], function(e, t, n, i, r, o, a, s, u, c, l, d) {
            function f() {
                this.uid = e.guid("uid_");
            }
            function h() {
                function n(e, t) {
                    return y.hasOwnProperty(e) ? 1 === arguments.length ? l.can("define_property") ? y[e] : v[e] : void (l.can("define_property") ? y[e] = t : v[e] = t) : void 0;
                }
                function u(t) {
                    function i() {
                        k && (k.destroy(), k = null), s.dispatchEvent("loadend"), s = null;
                    }
                    function r(r) {
                        k.bind("LoadStart", function(e) {
                            n("readyState", h.LOADING), s.dispatchEvent("readystatechange"), s.dispatchEvent(e), 
                            I && s.upload.dispatchEvent(e);
                        }), k.bind("Progress", function(e) {
                            n("readyState") !== h.LOADING && (n("readyState", h.LOADING), s.dispatchEvent("readystatechange")), 
                            s.dispatchEvent(e);
                        }), k.bind("UploadProgress", function(e) {
                            I && s.upload.dispatchEvent({
                                type: "progress",
                                lengthComputable: !1,
                                total: e.total,
                                loaded: e.loaded
                            });
                        }), k.bind("Load", function(t) {
                            n("readyState", h.DONE), n("status", Number(r.exec.call(k, "XMLHttpRequest", "getStatus") || 0)), 
                            n("statusText", p[n("status")] || ""), n("response", r.exec.call(k, "XMLHttpRequest", "getResponse", n("responseType"))), 
                            ~e.inArray(n("responseType"), [ "text", "" ]) ? n("responseText", n("response")) : "document" === n("responseType") && n("responseXML", n("response")), 
                            U = r.exec.call(k, "XMLHttpRequest", "getAllResponseHeaders"), s.dispatchEvent("readystatechange"), 
                            n("status") > 0 ? (I && s.upload.dispatchEvent(t), s.dispatchEvent(t)) : (N = !0, 
                            s.dispatchEvent("error")), i();
                        }), k.bind("Abort", function(e) {
                            s.dispatchEvent(e), i();
                        }), k.bind("Error", function(e) {
                            N = !0, n("readyState", h.DONE), s.dispatchEvent("readystatechange"), D = !0, s.dispatchEvent(e), 
                            i();
                        }), r.exec.call(k, "XMLHttpRequest", "send", {
                            url: E,
                            method: _,
                            async: w,
                            user: b,
                            password: R,
                            headers: x,
                            mimeType: A,
                            encoding: T,
                            responseType: s.responseType,
                            withCredentials: s.withCredentials,
                            options: P
                        }, t);
                    }
                    var s = this;
                    M = new Date().getTime(), k = new a(), "string" == typeof P.required_caps && (P.required_caps = o.parseCaps(P.required_caps)), 
                    P.required_caps = e.extend({}, P.required_caps, {
                        return_response_type: s.responseType
                    }), t instanceof c && (P.required_caps.send_multipart = !0), L || (P.required_caps.do_cors = !0), 
                    P.ruid ? r(k.connectRuntime(P)) : (k.bind("RuntimeInit", function(e, t) {
                        r(t);
                    }), k.bind("RuntimeError", function(e, t) {
                        s.dispatchEvent("RuntimeError", t);
                    }), k.connectRuntime(P));
                }
                function g() {
                    n("responseText", ""), n("responseXML", null), n("response", null), n("status", 0), 
                    n("statusText", ""), M = C = null;
                }
                var v = this, y = {
                    timeout: 0,
                    readyState: h.UNSENT,
                    withCredentials: !1,
                    status: 0,
                    statusText: "",
                    responseType: "",
                    responseXML: null,
                    responseText: null,
                    response: null
                }, w = !0, E, _, x = {}, b, R, T = null, A = null, S = !1, O = !1, I = !1, D = !1, N = !1, L = !1, M, C, F = null, H = null, P = {}, k, U = "", B;
                e.extend(this, y, {
                    uid: e.guid("uid_"),
                    upload: new f(),
                    open: function(o, a, s, u, c) {
                        var l;
                        if (!o || !a) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        if (/[\u0100-\uffff]/.test(o) || i.utf8_encode(o) !== o) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        if (~e.inArray(o.toUpperCase(), [ "CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", "TRACE", "TRACK" ]) && (_ = o.toUpperCase()), 
                        ~e.inArray(_, [ "CONNECT", "TRACE", "TRACK" ])) throw new t.DOMException(t.DOMException.SECURITY_ERR);
                        if (a = i.utf8_encode(a), l = r.parseUrl(a), L = r.hasSameOrigin(l), E = r.resolveUrl(a), 
                        (u || c) && !L) throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);
                        if (b = u || l.user, R = c || l.pass, w = s || !0, w === !1 && (n("timeout") || n("withCredentials") || "" !== n("responseType"))) throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);
                        S = !w, O = !1, x = {}, g.call(this), n("readyState", h.OPENED), this.convertEventPropsToHandlers([ "readystatechange" ]), 
                        this.dispatchEvent("readystatechange");
                    },
                    setRequestHeader: function(r, o) {
                        var a = [ "accept-charset", "accept-encoding", "access-control-request-headers", "access-control-request-method", "connection", "content-length", "cookie", "cookie2", "content-transfer-encoding", "date", "expect", "host", "keep-alive", "origin", "referer", "te", "trailer", "transfer-encoding", "upgrade", "user-agent", "via" ];
                        if (n("readyState") !== h.OPENED || O) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                        if (/[\u0100-\uffff]/.test(r) || i.utf8_encode(r) !== r) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        return r = e.trim(r).toLowerCase(), ~e.inArray(r, a) || /^(proxy\-|sec\-)/.test(r) ? !1 : (x[r] ? x[r] += ", " + o : x[r] = o, 
                        !0);
                    },
                    getAllResponseHeaders: function() {
                        return U || "";
                    },
                    getResponseHeader: function(t) {
                        return t = t.toLowerCase(), N || ~e.inArray(t, [ "set-cookie", "set-cookie2" ]) ? null : U && "" !== U && (B || (B = {}, 
                        e.each(U.split(/\r\n/), function(t) {
                            var n = t.split(/:\s+/);
                            2 === n.length && (n[0] = e.trim(n[0]), B[n[0].toLowerCase()] = {
                                header: n[0],
                                value: e.trim(n[1])
                            });
                        })), B.hasOwnProperty(t)) ? B[t].header + ": " + B[t].value : null;
                    },
                    overrideMimeType: function(i) {
                        var r, o;
                        if (~e.inArray(n("readyState"), [ h.LOADING, h.DONE ])) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                        if (i = e.trim(i.toLowerCase()), /;/.test(i) && (r = i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/)) && (i = r[1], 
                        r[2] && (o = r[2])), !d.mimes[i]) throw new t.DOMException(t.DOMException.SYNTAX_ERR);
                        F = i, H = o;
                    },
                    send: function(n, r) {
                        if (P = "string" === e.typeOf(r) ? {
                            ruid: r
                        } : r ? r : {}, this.convertEventPropsToHandlers(m), this.upload.convertEventPropsToHandlers(m), 
                        this.readyState !== h.OPENED || O) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                        if (n instanceof s) P.ruid = n.ruid, A = n.type || "application/octet-stream"; else if (n instanceof c) {
                            if (n.hasBlob()) {
                                var o = n.getBlob();
                                P.ruid = o.ruid, A = o.type || "application/octet-stream";
                            }
                        } else "string" == typeof n && (T = "UTF-8", A = "text/plain;charset=UTF-8", n = i.utf8_encode(n));
                        this.withCredentials || (this.withCredentials = P.required_caps && P.required_caps.send_browser_cookies && !L), 
                        I = !S && this.upload.hasEventListener(), N = !1, D = !n, S || (O = !0), u.call(this, n);
                    },
                    abort: function() {
                        if (N = !0, S = !1, ~e.inArray(n("readyState"), [ h.UNSENT, h.OPENED, h.DONE ])) n("readyState", h.UNSENT); else {
                            if (n("readyState", h.DONE), O = !1, !k) throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);
                            k.getRuntime().exec.call(k, "XMLHttpRequest", "abort", D), D = !0;
                        }
                    },
                    destroy: function() {
                        k && ("function" === e.typeOf(k.destroy) && k.destroy(), k = null), this.unbindAll(), 
                        this.upload && (this.upload.unbindAll(), this.upload = null);
                    }
                });
            }
            var p = {
                100: "Continue",
                101: "Switching Protocols",
                102: "Processing",
                200: "OK",
                201: "Created",
                202: "Accepted",
                203: "Non-Authoritative Information",
                204: "No Content",
                205: "Reset Content",
                206: "Partial Content",
                207: "Multi-Status",
                226: "IM Used",
                300: "Multiple Choices",
                301: "Moved Permanently",
                302: "Found",
                303: "See Other",
                304: "Not Modified",
                305: "Use Proxy",
                306: "Reserved",
                307: "Temporary Redirect",
                400: "Bad Request",
                401: "Unauthorized",
                402: "Payment Required",
                403: "Forbidden",
                404: "Not Found",
                405: "Method Not Allowed",
                406: "Not Acceptable",
                407: "Proxy Authentication Required",
                408: "Request Timeout",
                409: "Conflict",
                410: "Gone",
                411: "Length Required",
                412: "Precondition Failed",
                413: "Request Entity Too Large",
                414: "Request-URI Too Long",
                415: "Unsupported Media Type",
                416: "Requested Range Not Satisfiable",
                417: "Expectation Failed",
                422: "Unprocessable Entity",
                423: "Locked",
                424: "Failed Dependency",
                426: "Upgrade Required",
                500: "Internal Server Error",
                501: "Not Implemented",
                502: "Bad Gateway",
                503: "Service Unavailable",
                504: "Gateway Timeout",
                505: "HTTP Version Not Supported",
                506: "Variant Also Negotiates",
                507: "Insufficient Storage",
                510: "Not Extended"
            };
            f.prototype = n.instance;
            var m = [ "loadstart", "progress", "abort", "error", "load", "timeout", "loadend" ], g = 1, v = 2;
            return h.UNSENT = 0, h.OPENED = 1, h.HEADERS_RECEIVED = 2, h.LOADING = 3, h.DONE = 4, 
            h.prototype = n.instance, h;
        }), i(O, [ u, m, v, p ], function(e, t, n, i) {
            function r() {
                function i() {
                    l = d = 0, c = this.result = null;
                }
                function o(t, n) {
                    var i = this;
                    u = n, i.bind("TransportingProgress", function(t) {
                        d = t.loaded, l > d && -1 === e.inArray(i.state, [ r.IDLE, r.DONE ]) && a.call(i);
                    }, 999), i.bind("TransportingComplete", function() {
                        d = l, i.state = r.DONE, c = null, i.result = u.exec.call(i, "Transporter", "getAsBlob", t || "");
                    }, 999), i.state = r.BUSY, i.trigger("TransportingStarted"), a.call(i);
                }
                function a() {
                    var e = this, n, i = l - d;
                    f > i && (f = i), n = t.btoa(c.substr(d, f)), u.exec.call(e, "Transporter", "receive", n, l);
                }
                var s, u, c, l, d, f;
                n.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    state: r.IDLE,
                    result: null,
                    transport: function(t, n, r) {
                        var a = this;
                        if (r = e.extend({
                            chunk_size: 204798
                        }, r), (s = r.chunk_size % 3) && (r.chunk_size += 3 - s), f = r.chunk_size, i.call(this), 
                        c = t, l = t.length, "string" === e.typeOf(r) || r.ruid) o.call(a, n, this.connectRuntime(r)); else {
                            var u = function(e, t) {
                                a.unbind("RuntimeInit", u), o.call(a, n, t);
                            };
                            this.bind("RuntimeInit", u), this.connectRuntime(r);
                        }
                    },
                    abort: function() {
                        var e = this;
                        e.state = r.IDLE, u && (u.exec.call(e, "Transporter", "clear"), e.trigger("TransportingAborted")), 
                        i.call(e);
                    },
                    destroy: function() {
                        this.unbindAll(), u = null, this.disconnectRuntime(), i.call(this);
                    }
                });
            }
            return r.IDLE = 0, r.BUSY = 1, r.DONE = 2, r.prototype = i.instance, r;
        }), i(I, [ u, f, h, T, S, g, v, O, d, p, y, w, m ], function(e, t, n, i, r, o, a, s, u, c, l, d, f) {
            function h() {
                function i(e) {
                    e || (e = this.getRuntime().exec.call(this, "Image", "getInfo")), this.size = e.size, 
                    this.width = e.width, this.height = e.height, this.type = e.type, this.meta = e.meta, 
                    "" === this.name && (this.name = e.name);
                }
                function c(t) {
                    var i = e.typeOf(t);
                    try {
                        if (t instanceof h) {
                            if (!t.size) throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);
                            m.apply(this, arguments);
                        } else if (t instanceof l) {
                            if (!~e.inArray(t.type, [ "image/jpeg", "image/png" ])) throw new n.ImageError(n.ImageError.WRONG_FORMAT);
                            g.apply(this, arguments);
                        } else if (-1 !== e.inArray(i, [ "blob", "file" ])) c.call(this, new d(null, t), arguments[1]); else if ("string" === i) /^data:[^;]*;base64,/.test(t) ? c.call(this, new l(null, {
                            data: t
                        }), arguments[1]) : v.apply(this, arguments); else {
                            if ("node" !== i || "img" !== t.nodeName.toLowerCase()) throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);
                            c.call(this, t.src, arguments[1]);
                        }
                    } catch (r) {
                        this.trigger("error", r.code);
                    }
                }
                function m(t, n) {
                    var i = this.connectRuntime(t.ruid);
                    this.ruid = i.uid, i.exec.call(this, "Image", "loadFromImage", t, "undefined" === e.typeOf(n) ? !0 : n);
                }
                function g(t, n) {
                    function i(e) {
                        r.ruid = e.uid, e.exec.call(r, "Image", "loadFromBlob", t);
                    }
                    var r = this;
                    r.name = t.name || "", t.isDetached() ? (this.bind("RuntimeInit", function(e, t) {
                        i(t);
                    }), n && "string" == typeof n.required_caps && (n.required_caps = o.parseCaps(n.required_caps)), 
                    this.connectRuntime(e.extend({
                        required_caps: {
                            access_image_binary: !0,
                            resize_image: !0
                        }
                    }, n))) : i(this.connectRuntime(t.ruid));
                }
                function v(e, t) {
                    var n = this, i;
                    i = new r(), i.open("get", e), i.responseType = "blob", i.onprogress = function(e) {
                        n.trigger(e);
                    }, i.onload = function() {
                        g.call(n, i.response, !0);
                    }, i.onerror = function(e) {
                        n.trigger(e);
                    }, i.onloadend = function() {
                        i.destroy();
                    }, i.bind("RuntimeError", function(e, t) {
                        n.trigger("RuntimeError", t);
                    }), i.send(null, t);
                }
                a.call(this), e.extend(this, {
                    uid: e.guid("uid_"),
                    ruid: null,
                    name: "",
                    size: 0,
                    width: 0,
                    height: 0,
                    type: "",
                    meta: {},
                    clone: function() {
                        this.load.apply(this, arguments);
                    },
                    load: function() {
                        this.bind("Load Resize", function() {
                            i.call(this);
                        }, 999), this.convertEventPropsToHandlers(p), c.apply(this, arguments);
                    },
                    downsize: function(t) {
                        var i = {
                            width: this.width,
                            height: this.height,
                            crop: !1,
                            preserveHeaders: !0
                        };
                        t = "object" == typeof t ? e.extend(i, t) : e.extend(i, {
                            width: arguments[0],
                            height: arguments[1],
                            crop: arguments[2],
                            preserveHeaders: arguments[3]
                        });
                        try {
                            if (!this.size) throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);
                            if (this.width > h.MAX_RESIZE_WIDTH || this.height > h.MAX_RESIZE_HEIGHT) throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);
                            this.getRuntime().exec.call(this, "Image", "downsize", t.width, t.height, t.crop, t.preserveHeaders);
                        } catch (r) {
                            this.trigger("error", r.code);
                        }
                    },
                    crop: function(e, t, n) {
                        this.downsize(e, t, !0, n);
                    },
                    getAsCanvas: function() {
                        if (!u.can("create_canvas")) throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);
                        var e = this.connectRuntime(this.ruid);
                        return e.exec.call(this, "Image", "getAsCanvas");
                    },
                    getAsBlob: function(e, t) {
                        if (!this.size) throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);
                        return e || (e = "image/jpeg"), "image/jpeg" !== e || t || (t = 90), this.getRuntime().exec.call(this, "Image", "getAsBlob", e, t);
                    },
                    getAsDataURL: function(e, t) {
                        if (!this.size) throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);
                        return this.getRuntime().exec.call(this, "Image", "getAsDataURL", e, t);
                    },
                    getAsBinaryString: function(e, t) {
                        var n = this.getAsDataURL(e, t);
                        return f.atob(n.substring(n.indexOf("base64,") + 7));
                    },
                    embed: function(i) {
                        function r() {
                            if (u.can("create_canvas")) {
                                var t = a.getAsCanvas();
                                if (t) return i.appendChild(t), t = null, a.destroy(), void o.trigger("embedded");
                            }
                            var r = a.getAsDataURL(c, l);
                            if (!r) throw new n.ImageError(n.ImageError.WRONG_FORMAT);
                            if (u.can("use_data_uri_of", r.length)) i.innerHTML = '<img src="' + r + '" width="' + a.width + '" height="' + a.height + '" />', 
                            a.destroy(), o.trigger("embedded"); else {
                                var d = new s();
                                d.bind("TransportingComplete", function() {
                                    v = o.connectRuntime(this.result.ruid), o.bind("Embedded", function() {
                                        e.extend(v.getShimContainer().style, {
                                            top: "0px",
                                            left: "0px",
                                            width: a.width + "px",
                                            height: a.height + "px"
                                        }), v = null;
                                    }, 999), v.exec.call(o, "ImageView", "display", this.result.uid, m, g), a.destroy();
                                }), d.transport(f.atob(r.substring(r.indexOf("base64,") + 7)), c, e.extend({}, p, {
                                    required_caps: {
                                        display_media: !0
                                    },
                                    runtime_order: "flash,silverlight",
                                    container: i
                                }));
                            }
                        }
                        var o = this, a, c, l, d, p = arguments[1] || {}, m = this.width, g = this.height, v;
                        try {
                            if (!(i = t.get(i))) throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);
                            if (!this.size) throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);
                            if (this.width > h.MAX_RESIZE_WIDTH || this.height > h.MAX_RESIZE_HEIGHT) throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);
                            if (c = p.type || this.type || "image/jpeg", l = p.quality || 90, d = "undefined" !== e.typeOf(p.crop) ? p.crop : !1, 
                            p.width) m = p.width, g = p.height || m; else {
                                var y = t.getSize(i);
                                y.w && y.h && (m = y.w, g = y.h);
                            }
                            return a = new h(), a.bind("Resize", function() {
                                r.call(o);
                            }), a.bind("Load", function() {
                                a.downsize(m, g, d, !1);
                            }), a.clone(this, !1), a;
                        } catch (w) {
                            this.trigger("error", w.code);
                        }
                    },
                    destroy: function() {
                        this.ruid && (this.getRuntime().exec.call(this, "Image", "destroy"), this.disconnectRuntime()), 
                        this.unbindAll();
                    }
                });
            }
            var p = [ "progress", "load", "error", "resize", "embedded" ];
            return h.MAX_RESIZE_WIDTH = 6500, h.MAX_RESIZE_HEIGHT = 6500, h.prototype = c.instance, 
            h;
        }), i(D, [ u, h, g, d ], function(e, t, n, i) {
            function r(t) {
                var r = this, s = n.capTest, u = n.capTrue, c = e.extend({
                    access_binary: s(window.FileReader || window.File && window.File.getAsDataURL),
                    access_image_binary: function() {
                        return r.can("access_binary") && !!a.Image;
                    },
                    display_media: s(i.can("create_canvas") || i.can("use_data_uri_over32kb")),
                    do_cors: s(window.XMLHttpRequest && "withCredentials" in new XMLHttpRequest()),
                    drag_and_drop: s(function() {
                        var e = document.createElement("div");
                        return ("draggable" in e || "ondragstart" in e && "ondrop" in e) && ("IE" !== i.browser || i.version > 9);
                    }()),
                    filter_by_extension: s(function() {
                        return "Chrome" === i.browser && i.version >= 28 || "IE" === i.browser && i.version >= 10;
                    }()),
                    return_response_headers: u,
                    return_response_type: function(e) {
                        return "json" === e && window.JSON ? !0 : i.can("return_response_type", e);
                    },
                    return_status_code: u,
                    report_upload_progress: s(window.XMLHttpRequest && new XMLHttpRequest().upload),
                    resize_image: function() {
                        return r.can("access_binary") && i.can("create_canvas");
                    },
                    select_file: function() {
                        return i.can("use_fileinput") && window.File;
                    },
                    select_folder: function() {
                        return r.can("select_file") && "Chrome" === i.browser && i.version >= 21;
                    },
                    select_multiple: function() {
                        return !(!r.can("select_file") || "Safari" === i.browser && "Windows" === i.os || "iOS" === i.os && i.verComp(i.osVersion, "7.0.4", "<"));
                    },
                    send_binary_string: s(window.XMLHttpRequest && (new XMLHttpRequest().sendAsBinary || window.Uint8Array && window.ArrayBuffer)),
                    send_custom_headers: s(window.XMLHttpRequest),
                    send_multipart: function() {
                        return !!(window.XMLHttpRequest && new XMLHttpRequest().upload && window.FormData) || r.can("send_binary_string");
                    },
                    slice_blob: s(window.File && (File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice)),
                    stream_upload: function() {
                        return r.can("slice_blob") && r.can("send_multipart");
                    },
                    summon_file_dialog: s(function() {
                        return "Firefox" === i.browser && i.version >= 4 || "Opera" === i.browser && i.version >= 12 || "IE" === i.browser && i.version >= 10 || !!~e.inArray(i.browser, [ "Chrome", "Safari" ]);
                    }()),
                    upload_filesize: u
                }, arguments[2]);
                n.call(this, t, arguments[1] || o, c), e.extend(this, {
                    init: function() {
                        this.trigger("Init");
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(r), e = r = null;
                        };
                    }(this.destroy)
                }), e.extend(this.getShim(), a);
            }
            var o = "html5", a = {};
            return n.addConstructor(o, r), a;
        }), i(N, [ D, y ], function(e, t) {
            function n() {
                function e(e, t, n) {
                    var i;
                    if (!window.File.prototype.slice) return (i = window.File.prototype.webkitSlice || window.File.prototype.mozSlice) ? i.call(e, t, n) : null;
                    try {
                        return e.slice(), e.slice(t, n);
                    } catch (r) {
                        return e.slice(t, n - t);
                    }
                }
                this.slice = function() {
                    return new t(this.getRuntime().uid, e.apply(this, arguments));
                };
            }
            return e.Blob = n;
        }), i(L, [ u ], function(e) {
            function t() {
                this.returnValue = !1;
            }
            function n() {
                this.cancelBubble = !0;
            }
            var i = {}, r = "moxie_" + e.guid(), o = function(o, a, s, u) {
                var c, l;
                a = a.toLowerCase(), o.addEventListener ? (c = s, o.addEventListener(a, c, !1)) : o.attachEvent && (c = function() {
                    var e = window.event;
                    e.target || (e.target = e.srcElement), e.preventDefault = t, e.stopPropagation = n, 
                    s(e);
                }, o.attachEvent("on" + a, c)), o[r] || (o[r] = e.guid()), i.hasOwnProperty(o[r]) || (i[o[r]] = {}), 
                l = i[o[r]], l.hasOwnProperty(a) || (l[a] = []), l[a].push({
                    func: c,
                    orig: s,
                    key: u
                });
            }, a = function(t, n, o) {
                var a, s;
                if (n = n.toLowerCase(), t[r] && i[t[r]] && i[t[r]][n]) {
                    a = i[t[r]][n];
                    for (var u = a.length - 1; u >= 0 && (a[u].orig !== o && a[u].key !== o || (t.removeEventListener ? t.removeEventListener(n, a[u].func, !1) : t.detachEvent && t.detachEvent("on" + n, a[u].func), 
                    a[u].orig = null, a[u].func = null, a.splice(u, 1), o === s)); u--) ;
                    if (a.length || delete i[t[r]][n], e.isEmptyObj(i[t[r]])) {
                        delete i[t[r]];
                        try {
                            delete t[r];
                        } catch (c) {
                            t[r] = s;
                        }
                    }
                }
            }, s = function(t, n) {
                t && t[r] && e.each(i[t[r]], function(e, i) {
                    a(t, i, n);
                });
            };
            return {
                addEvent: o,
                removeEvent: a,
                removeAllEvents: s
            };
        }), i(M, [ D, u, f, L, l, d ], function(e, t, n, i, r, o) {
            function a() {
                var e = [], a;
                t.extend(this, {
                    init: function(s) {
                        var u = this, c = u.getRuntime(), l, d, f, h, p, m;
                        a = s, e = [], f = a.accept.mimes || r.extList2mimes(a.accept, c.can("filter_by_extension")), 
                        d = c.getShimContainer(), d.innerHTML = '<input id="' + c.uid + '" type="file" style="font-size:999px;opacity:0;"' + (a.multiple && c.can("select_multiple") ? "multiple" : "") + (a.directory && c.can("select_folder") ? "webkitdirectory directory" : "") + (f ? ' accept="' + f.join(",") + '"' : "") + " />", 
                        l = n.get(c.uid), t.extend(l.style, {
                            position: "absolute",
                            top: 0,
                            left: 0,
                            width: "100%",
                            height: "100%"
                        }), h = n.get(a.browse_button), c.can("summon_file_dialog") && ("static" === n.getStyle(h, "position") && (h.style.position = "relative"), 
                        p = parseInt(n.getStyle(h, "z-index"), 10) || 1, h.style.zIndex = p, d.style.zIndex = p - 1, 
                        i.addEvent(h, "click", function(e) {
                            var t = n.get(c.uid);
                            t && !t.disabled && t.click(), e.preventDefault();
                        }, u.uid)), m = c.can("summon_file_dialog") ? h : d, i.addEvent(m, "mouseover", function() {
                            u.trigger("mouseenter");
                        }, u.uid), i.addEvent(m, "mouseout", function() {
                            u.trigger("mouseleave");
                        }, u.uid), i.addEvent(m, "mousedown", function() {
                            u.trigger("mousedown");
                        }, u.uid), i.addEvent(n.get(a.container), "mouseup", function() {
                            u.trigger("mouseup");
                        }, u.uid), l.onchange = function g() {
                            if (e = [], a.directory ? t.each(this.files, function(t) {
                                "." !== t.name && e.push(t);
                            }) : e = [].slice.call(this.files), "IE" !== o.browser && "IEMobile" !== o.browser) this.value = ""; else {
                                var n = this.cloneNode(!0);
                                this.parentNode.replaceChild(n, this), n.onchange = g;
                            }
                            u.trigger("change");
                        }, u.trigger({
                            type: "ready",
                            async: !0
                        }), d = null;
                    },
                    getFiles: function() {
                        return e;
                    },
                    disable: function(e) {
                        var t = this.getRuntime(), i;
                        (i = n.get(t.uid)) && (i.disabled = !!e);
                    },
                    destroy: function() {
                        var t = this.getRuntime(), r = t.getShim(), o = t.getShimContainer();
                        i.removeAllEvents(o, this.uid), i.removeAllEvents(a && n.get(a.container), this.uid), 
                        i.removeAllEvents(a && n.get(a.browse_button), this.uid), o && (o.innerHTML = ""), 
                        r.removeInstance(this.uid), e = a = o = r = null;
                    }
                });
            }
            return e.FileInput = a;
        }), i(C, [ D, u, f, L, l ], function(e, t, n, i, r) {
            function o() {
                function e(e) {
                    if (!e.dataTransfer || !e.dataTransfer.types) return !1;
                    var n = t.toArray(e.dataTransfer.types || []);
                    return -1 !== t.inArray("Files", n) || -1 !== t.inArray("public.file-url", n) || -1 !== t.inArray("application/x-moz-file", n);
                }
                function o(e) {
                    for (var n = [], i = 0; i < e.length; i++) [].push.apply(n, e[i].extensions.split(/\s*,\s*/));
                    return -1 === t.inArray("*", n) ? n : [];
                }
                function a(e) {
                    if (!f.length) return !0;
                    var n = r.getFileExtension(e.name);
                    return !n || -1 !== t.inArray(n, f);
                }
                function s(e, n) {
                    var i = [];
                    t.each(e, function(e) {
                        var t = e.webkitGetAsEntry();
                        if (t) if (t.isFile) {
                            var n = e.getAsFile();
                            a(n) && d.push(n);
                        } else i.push(t);
                    }), i.length ? u(i, n) : n();
                }
                function u(e, n) {
                    var i = [];
                    t.each(e, function(e) {
                        i.push(function(t) {
                            c(e, t);
                        });
                    }), t.inSeries(i, function() {
                        n();
                    });
                }
                function c(e, t) {
                    e.isFile ? e.file(function(e) {
                        a(e) && d.push(e), t();
                    }, function() {
                        t();
                    }) : e.isDirectory ? l(e, t) : t();
                }
                function l(e, t) {
                    function n(e) {
                        r.readEntries(function(t) {
                            t.length ? ([].push.apply(i, t), n(e)) : e();
                        }, e);
                    }
                    var i = [], r = e.createReader();
                    n(function() {
                        u(i, t);
                    });
                }
                var d = [], f = [], h;
                t.extend(this, {
                    init: function(n) {
                        var r = this, u;
                        h = n, f = o(h.accept), u = h.container, i.addEvent(u, "dragover", function(t) {
                            e(t) && (t.preventDefault(), t.dataTransfer.dropEffect = "copy");
                        }, r.uid), i.addEvent(u, "drop", function(n) {
                            e(n) && (n.preventDefault(), d = [], n.dataTransfer.items && n.dataTransfer.items[0].webkitGetAsEntry ? s(n.dataTransfer.items, function() {
                                r.trigger("drop");
                            }) : (t.each(n.dataTransfer.files, function(e) {
                                a(e) && d.push(e);
                            }), r.trigger("drop")));
                        }, r.uid), i.addEvent(u, "dragenter", function(e) {
                            r.trigger("dragenter");
                        }, r.uid), i.addEvent(u, "dragleave", function(e) {
                            r.trigger("dragleave");
                        }, r.uid);
                    },
                    getFiles: function() {
                        return d;
                    },
                    destroy: function() {
                        i.removeAllEvents(h && n.get(h.container), this.uid), d = f = h = null;
                    }
                });
            }
            return e.FileDrop = o;
        }), i(F, [ D, m, u ], function(e, t, n) {
            function i() {
                function e(e) {
                    return t.atob(e.substring(e.indexOf("base64,") + 7));
                }
                var i, r = !1;
                n.extend(this, {
                    read: function(e, t) {
                        var o = this;
                        i = new window.FileReader(), i.addEventListener("progress", function(e) {
                            o.trigger(e);
                        }), i.addEventListener("load", function(e) {
                            o.trigger(e);
                        }), i.addEventListener("error", function(e) {
                            o.trigger(e, i.error);
                        }), i.addEventListener("loadend", function() {
                            i = null;
                        }), "function" === n.typeOf(i[e]) ? (r = !1, i[e](t.getSource())) : "readAsBinaryString" === e && (r = !0, 
                        i.readAsDataURL(t.getSource()));
                    },
                    getResult: function() {
                        return i && i.result ? r ? e(i.result) : i.result : null;
                    },
                    abort: function() {
                        i && i.abort();
                    },
                    destroy: function() {
                        i = null;
                    }
                });
            }
            return e.FileReader = i;
        }), i(H, [ D, u, l, R, w, y, A, h, d ], function(e, t, n, i, r, o, a, s, u) {
            function c() {
                function e(e, t) {
                    var n = this, i, r;
                    i = t.getBlob().getSource(), r = new window.FileReader(), r.onload = function() {
                        t.append(t.getBlobName(), new o(null, {
                            type: i.type,
                            data: r.result
                        })), f.send.call(n, e, t);
                    }, r.readAsBinaryString(i);
                }
                function c() {
                    return !window.XMLHttpRequest || "IE" === u.browser && u.version < 8 ? function() {
                        for (var e = [ "Msxml2.XMLHTTP.6.0", "Microsoft.XMLHTTP" ], t = 0; t < e.length; t++) try {
                            return new ActiveXObject(e[t]);
                        } catch (n) {}
                    }() : new window.XMLHttpRequest();
                }
                function l(e) {
                    var t = e.responseXML, n = e.responseText;
                    return "IE" === u.browser && n && t && !t.documentElement && /[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type")) && (t = new window.ActiveXObject("Microsoft.XMLDOM"), 
                    t.async = !1, t.validateOnParse = !1, t.loadXML(n)), t && ("IE" === u.browser && 0 !== t.parseError || !t.documentElement || "parsererror" === t.documentElement.tagName) ? null : t;
                }
                function d(e) {
                    var t = "----moxieboundary" + new Date().getTime(), n = "--", i = "\r\n", r = "", a = this.getRuntime();
                    if (!a.can("send_binary_string")) throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);
                    return h.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + t), 
                    e.each(function(e, a) {
                        r += e instanceof o ? n + t + i + 'Content-Disposition: form-data; name="' + a + '"; filename="' + unescape(encodeURIComponent(e.name || "blob")) + '"' + i + "Content-Type: " + (e.type || "application/octet-stream") + i + i + e.getSource() + i : n + t + i + 'Content-Disposition: form-data; name="' + a + '"' + i + i + unescape(encodeURIComponent(e)) + i;
                    }), r += n + t + n + i;
                }
                var f = this, h, p;
                t.extend(this, {
                    send: function(n, r) {
                        var s = this, l = "Mozilla" === u.browser && u.version >= 4 && u.version < 7, f = "Android Browser" === u.browser, m = !1;
                        if (p = n.url.replace(/^.+?\/([\w\-\.]+)$/, "$1").toLowerCase(), h = c(), h.open(n.method, n.url, n.async, n.user, n.password), 
                        r instanceof o) r.isDetached() && (m = !0), r = r.getSource(); else if (r instanceof a) {
                            if (r.hasBlob()) if (r.getBlob().isDetached()) r = d.call(s, r), m = !0; else if ((l || f) && "blob" === t.typeOf(r.getBlob().getSource()) && window.FileReader) return void e.call(s, n, r);
                            if (r instanceof a) {
                                var g = new window.FormData();
                                r.each(function(e, t) {
                                    e instanceof o ? g.append(t, e.getSource()) : g.append(t, e);
                                }), r = g;
                            }
                        }
                        h.upload ? (n.withCredentials && (h.withCredentials = !0), h.addEventListener("load", function(e) {
                            s.trigger(e);
                        }), h.addEventListener("error", function(e) {
                            s.trigger(e);
                        }), h.addEventListener("progress", function(e) {
                            s.trigger(e);
                        }), h.upload.addEventListener("progress", function(e) {
                            s.trigger({
                                type: "UploadProgress",
                                loaded: e.loaded,
                                total: e.total
                            });
                        })) : h.onreadystatechange = function v() {
                            switch (h.readyState) {
                              case 1:
                                break;

                              case 2:
                                break;

                              case 3:
                                var e, t;
                                try {
                                    i.hasSameOrigin(n.url) && (e = h.getResponseHeader("Content-Length") || 0), h.responseText && (t = h.responseText.length);
                                } catch (r) {
                                    e = t = 0;
                                }
                                s.trigger({
                                    type: "progress",
                                    lengthComputable: !!e,
                                    total: parseInt(e, 10),
                                    loaded: t
                                });
                                break;

                              case 4:
                                h.onreadystatechange = function() {}, s.trigger(0 === h.status ? "error" : "load");
                            }
                        }, t.isEmptyObj(n.headers) || t.each(n.headers, function(e, t) {
                            h.setRequestHeader(t, e);
                        }), "" !== n.responseType && "responseType" in h && (h.responseType = "json" !== n.responseType || u.can("return_response_type", "json") ? n.responseType : "text"), 
                        m ? h.sendAsBinary ? h.sendAsBinary(r) : !function() {
                            for (var e = new Uint8Array(r.length), t = 0; t < r.length; t++) e[t] = 255 & r.charCodeAt(t);
                            h.send(e.buffer);
                        }() : h.send(r), s.trigger("loadstart");
                    },
                    getStatus: function() {
                        try {
                            if (h) return h.status;
                        } catch (e) {}
                        return 0;
                    },
                    getResponse: function(e) {
                        var t = this.getRuntime();
                        try {
                            switch (e) {
                              case "blob":
                                var i = new r(t.uid, h.response), o = h.getResponseHeader("Content-Disposition");
                                if (o) {
                                    var a = o.match(/filename=([\'\"'])([^\1]+)\1/);
                                    a && (p = a[2]);
                                }
                                return i.name = p, i.type || (i.type = n.getFileMime(p)), i;

                              case "json":
                                return u.can("return_response_type", "json") ? h.response : 200 === h.status && window.JSON ? JSON.parse(h.responseText) : null;

                              case "document":
                                return l(h);

                              default:
                                return "" !== h.responseText ? h.responseText : null;
                            }
                        } catch (s) {
                            return null;
                        }
                    },
                    getAllResponseHeaders: function() {
                        try {
                            return h.getAllResponseHeaders();
                        } catch (e) {}
                        return "";
                    },
                    abort: function() {
                        h && h.abort();
                    },
                    destroy: function() {
                        f = p = null;
                    }
                });
            }
            return e.XMLHttpRequest = c;
        }), i(P, [], function() {
            return function() {
                function e(e, t) {
                    var n = r ? 0 : -8 * (t - 1), i = 0, a;
                    for (a = 0; t > a; a++) i |= o.charCodeAt(e + a) << Math.abs(n + 8 * a);
                    return i;
                }
                function n(e, t, n) {
                    n = 3 === arguments.length ? n : o.length - t - 1, o = o.substr(0, t) + e + o.substr(n + t);
                }
                function i(e, t, i) {
                    var o = "", a = r ? 0 : -8 * (i - 1), s;
                    for (s = 0; i > s; s++) o += String.fromCharCode(t >> Math.abs(a + 8 * s) & 255);
                    n(o, e, i);
                }
                var r = !1, o;
                return {
                    II: function(e) {
                        return e === t ? r : void (r = e);
                    },
                    init: function(e) {
                        r = !1, o = e;
                    },
                    SEGMENT: function(e, t, i) {
                        switch (arguments.length) {
                          case 1:
                            return o.substr(e, o.length - e - 1);

                          case 2:
                            return o.substr(e, t);

                          case 3:
                            n(i, e, t);
                            break;

                          default:
                            return o;
                        }
                    },
                    BYTE: function(t) {
                        return e(t, 1);
                    },
                    SHORT: function(t) {
                        return e(t, 2);
                    },
                    LONG: function(n, r) {
                        return r === t ? e(n, 4) : void i(n, r, 4);
                    },
                    SLONG: function(t) {
                        var n = e(t, 4);
                        return n > 2147483647 ? n - 4294967296 : n;
                    },
                    STRING: function(t, n) {
                        var i = "";
                        for (n += t; n > t; t++) i += String.fromCharCode(e(t, 1));
                        return i;
                    }
                };
            };
        }), i(k, [ P ], function(e) {
            return function t(n) {
                var i = [], r, o, a, s = 0;
                if (r = new e(), r.init(n), 65496 === r.SHORT(0)) {
                    for (o = 2; o <= n.length; ) if (a = r.SHORT(o), a >= 65488 && 65495 >= a) o += 2; else {
                        if (65498 === a || 65497 === a) break;
                        s = r.SHORT(o + 2) + 2, a >= 65505 && 65519 >= a && i.push({
                            hex: a,
                            name: "APP" + (15 & a),
                            start: o,
                            length: s,
                            segment: r.SEGMENT(o, s)
                        }), o += s;
                    }
                    return r.init(null), {
                        headers: i,
                        restore: function(e) {
                            var t, n;
                            for (r.init(e), o = 65504 == r.SHORT(2) ? 4 + r.SHORT(4) : 2, n = 0, t = i.length; t > n; n++) r.SEGMENT(o, 0, i[n].segment), 
                            o += i[n].length;
                            return e = r.SEGMENT(), r.init(null), e;
                        },
                        strip: function(e) {
                            var n, i, o;
                            for (i = new t(e), n = i.headers, i.purge(), r.init(e), o = n.length; o--; ) r.SEGMENT(n[o].start, n[o].length, "");
                            return e = r.SEGMENT(), r.init(null), e;
                        },
                        get: function(e) {
                            for (var t = [], n = 0, r = i.length; r > n; n++) i[n].name === e.toUpperCase() && t.push(i[n].segment);
                            return t;
                        },
                        set: function(e, t) {
                            var n = [], r, o, a;
                            for ("string" == typeof t ? n.push(t) : n = t, r = o = 0, a = i.length; a > r && (i[r].name === e.toUpperCase() && (i[r].segment = n[o], 
                            i[r].length = n[o].length, o++), !(o >= n.length)); r++) ;
                        },
                        purge: function() {
                            i = [], r.init(null), r = null;
                        }
                    };
                }
            };
        }), i(U, [ u, P ], function(e, n) {
            return function i() {
                function i(e, n) {
                    var i = a.SHORT(e), r, o, s, u, d, f, h, p, m = [], g = {};
                    for (r = 0; i > r; r++) if (h = f = e + 12 * r + 2, s = n[a.SHORT(h)], s !== t) {
                        switch (u = a.SHORT(h += 2), d = a.LONG(h += 2), h += 4, m = [], u) {
                          case 1:
                          case 7:
                            for (d > 4 && (h = a.LONG(h) + c.tiffHeader), o = 0; d > o; o++) m[o] = a.BYTE(h + o);
                            break;

                          case 2:
                            d > 4 && (h = a.LONG(h) + c.tiffHeader), g[s] = a.STRING(h, d - 1);
                            continue;

                          case 3:
                            for (d > 2 && (h = a.LONG(h) + c.tiffHeader), o = 0; d > o; o++) m[o] = a.SHORT(h + 2 * o);
                            break;

                          case 4:
                            for (d > 1 && (h = a.LONG(h) + c.tiffHeader), o = 0; d > o; o++) m[o] = a.LONG(h + 4 * o);
                            break;

                          case 5:
                            for (h = a.LONG(h) + c.tiffHeader, o = 0; d > o; o++) m[o] = a.LONG(h + 4 * o) / a.LONG(h + 4 * o + 4);
                            break;

                          case 9:
                            for (h = a.LONG(h) + c.tiffHeader, o = 0; d > o; o++) m[o] = a.SLONG(h + 4 * o);
                            break;

                          case 10:
                            for (h = a.LONG(h) + c.tiffHeader, o = 0; d > o; o++) m[o] = a.SLONG(h + 4 * o) / a.SLONG(h + 4 * o + 4);
                            break;

                          default:
                            continue;
                        }
                        p = 1 == d ? m[0] : m, g[s] = l.hasOwnProperty(s) && "object" != typeof p ? l[s][p] : p;
                    }
                    return g;
                }
                function r() {
                    var e = c.tiffHeader;
                    return a.II(18761 == a.SHORT(e)), 42 !== a.SHORT(e += 2) ? !1 : (c.IFD0 = c.tiffHeader + a.LONG(e += 2), 
                    u = i(c.IFD0, s.tiff), "ExifIFDPointer" in u && (c.exifIFD = c.tiffHeader + u.ExifIFDPointer, 
                    delete u.ExifIFDPointer), "GPSInfoIFDPointer" in u && (c.gpsIFD = c.tiffHeader + u.GPSInfoIFDPointer, 
                    delete u.GPSInfoIFDPointer), !0);
                }
                function o(e, t, n) {
                    var i, r, o, u = 0;
                    if ("string" == typeof t) {
                        var l = s[e.toLowerCase()];
                        for (var d in l) if (l[d] === t) {
                            t = d;
                            break;
                        }
                    }
                    i = c[e.toLowerCase() + "IFD"], r = a.SHORT(i);
                    for (var f = 0; r > f; f++) if (o = i + 12 * f + 2, a.SHORT(o) == t) {
                        u = o + 8;
                        break;
                    }
                    return u ? (a.LONG(u, n), !0) : !1;
                }
                var a, s, u, c = {}, l;
                return a = new n(), s = {
                    tiff: {
                        274: "Orientation",
                        270: "ImageDescription",
                        271: "Make",
                        272: "Model",
                        305: "Software",
                        34665: "ExifIFDPointer",
                        34853: "GPSInfoIFDPointer"
                    },
                    exif: {
                        36864: "ExifVersion",
                        40961: "ColorSpace",
                        40962: "PixelXDimension",
                        40963: "PixelYDimension",
                        36867: "DateTimeOriginal",
                        33434: "ExposureTime",
                        33437: "FNumber",
                        34855: "ISOSpeedRatings",
                        37377: "ShutterSpeedValue",
                        37378: "ApertureValue",
                        37383: "MeteringMode",
                        37384: "LightSource",
                        37385: "Flash",
                        37386: "FocalLength",
                        41986: "ExposureMode",
                        41987: "WhiteBalance",
                        41990: "SceneCaptureType",
                        41988: "DigitalZoomRatio",
                        41992: "Contrast",
                        41993: "Saturation",
                        41994: "Sharpness"
                    },
                    gps: {
                        0: "GPSVersionID",
                        1: "GPSLatitudeRef",
                        2: "GPSLatitude",
                        3: "GPSLongitudeRef",
                        4: "GPSLongitude"
                    }
                }, l = {
                    ColorSpace: {
                        1: "sRGB",
                        0: "Uncalibrated"
                    },
                    MeteringMode: {
                        0: "Unknown",
                        1: "Average",
                        2: "CenterWeightedAverage",
                        3: "Spot",
                        4: "MultiSpot",
                        5: "Pattern",
                        6: "Partial",
                        255: "Other"
                    },
                    LightSource: {
                        1: "Daylight",
                        2: "Fliorescent",
                        3: "Tungsten",
                        4: "Flash",
                        9: "Fine weather",
                        10: "Cloudy weather",
                        11: "Shade",
                        12: "Daylight fluorescent (D 5700 - 7100K)",
                        13: "Day white fluorescent (N 4600 -5400K)",
                        14: "Cool white fluorescent (W 3900 - 4500K)",
                        15: "White fluorescent (WW 3200 - 3700K)",
                        17: "Standard light A",
                        18: "Standard light B",
                        19: "Standard light C",
                        20: "D55",
                        21: "D65",
                        22: "D75",
                        23: "D50",
                        24: "ISO studio tungsten",
                        255: "Other"
                    },
                    Flash: {
                        0: "Flash did not fire.",
                        1: "Flash fired.",
                        5: "Strobe return light not detected.",
                        7: "Strobe return light detected.",
                        9: "Flash fired, compulsory flash mode",
                        13: "Flash fired, compulsory flash mode, return light not detected",
                        15: "Flash fired, compulsory flash mode, return light detected",
                        16: "Flash did not fire, compulsory flash mode",
                        24: "Flash did not fire, auto mode",
                        25: "Flash fired, auto mode",
                        29: "Flash fired, auto mode, return light not detected",
                        31: "Flash fired, auto mode, return light detected",
                        32: "No flash function",
                        65: "Flash fired, red-eye reduction mode",
                        69: "Flash fired, red-eye reduction mode, return light not detected",
                        71: "Flash fired, red-eye reduction mode, return light detected",
                        73: "Flash fired, compulsory flash mode, red-eye reduction mode",
                        77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",
                        79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",
                        89: "Flash fired, auto mode, red-eye reduction mode",
                        93: "Flash fired, auto mode, return light not detected, red-eye reduction mode",
                        95: "Flash fired, auto mode, return light detected, red-eye reduction mode"
                    },
                    ExposureMode: {
                        0: "Auto exposure",
                        1: "Manual exposure",
                        2: "Auto bracket"
                    },
                    WhiteBalance: {
                        0: "Auto white balance",
                        1: "Manual white balance"
                    },
                    SceneCaptureType: {
                        0: "Standard",
                        1: "Landscape",
                        2: "Portrait",
                        3: "Night scene"
                    },
                    Contrast: {
                        0: "Normal",
                        1: "Soft",
                        2: "Hard"
                    },
                    Saturation: {
                        0: "Normal",
                        1: "Low saturation",
                        2: "High saturation"
                    },
                    Sharpness: {
                        0: "Normal",
                        1: "Soft",
                        2: "Hard"
                    },
                    GPSLatitudeRef: {
                        N: "North latitude",
                        S: "South latitude"
                    },
                    GPSLongitudeRef: {
                        E: "East longitude",
                        W: "West longitude"
                    }
                }, {
                    init: function(e) {
                        return c = {
                            tiffHeader: 10
                        }, e !== t && e.length ? (a.init(e), 65505 === a.SHORT(0) && "EXIF\0" === a.STRING(4, 5).toUpperCase() ? r() : !1) : !1;
                    },
                    TIFF: function() {
                        return u;
                    },
                    EXIF: function() {
                        var t;
                        if (t = i(c.exifIFD, s.exif), t.ExifVersion && "array" === e.typeOf(t.ExifVersion)) {
                            for (var n = 0, r = ""; n < t.ExifVersion.length; n++) r += String.fromCharCode(t.ExifVersion[n]);
                            t.ExifVersion = r;
                        }
                        return t;
                    },
                    GPS: function() {
                        var t;
                        return t = i(c.gpsIFD, s.gps), t.GPSVersionID && "array" === e.typeOf(t.GPSVersionID) && (t.GPSVersionID = t.GPSVersionID.join(".")), 
                        t;
                    },
                    setExif: function(e, t) {
                        return "PixelXDimension" !== e && "PixelYDimension" !== e ? !1 : o("exif", e, t);
                    },
                    getBinary: function() {
                        return a.SEGMENT();
                    },
                    purge: function() {
                        a.init(null), a = u = null, c = {};
                    }
                };
            };
        }), i(B, [ u, h, k, P, U ], function(e, t, n, i, r) {
            function o(o) {
                function a() {
                    for (var e = 0, t, n; e <= u.length; ) {
                        if (t = c.SHORT(e += 2), t >= 65472 && 65475 >= t) return e += 5, {
                            height: c.SHORT(e),
                            width: c.SHORT(e += 2)
                        };
                        n = c.SHORT(e += 2), e += n - 2;
                    }
                    return null;
                }
                function s() {
                    d && l && c && (d.purge(), l.purge(), c.init(null), u = f = l = d = c = null);
                }
                var u, c, l, d, f, h;
                if (u = o, c = new i(), c.init(u), 65496 !== c.SHORT(0)) throw new t.ImageError(t.ImageError.WRONG_FORMAT);
                l = new n(o), d = new r(), h = !!d.init(l.get("app1")[0]), f = a.call(this), e.extend(this, {
                    type: "image/jpeg",
                    size: u.length,
                    width: f && f.width || 0,
                    height: f && f.height || 0,
                    setExif: function(t, n) {
                        return h ? ("object" === e.typeOf(t) ? e.each(t, function(e, t) {
                            d.setExif(t, e);
                        }) : d.setExif(t, n), void l.set("app1", d.getBinary())) : !1;
                    },
                    writeHeaders: function() {
                        return arguments.length ? l.restore(arguments[0]) : u = l.restore(u);
                    },
                    stripHeaders: function(e) {
                        return l.strip(e);
                    },
                    purge: function() {
                        s.call(this);
                    }
                }), h && (this.meta = {
                    tiff: d.TIFF(),
                    exif: d.EXIF(),
                    gps: d.GPS()
                });
            }
            return o;
        }), i(z, [ h, u, P ], function(e, t, n) {
            function i(i) {
                function r() {
                    var e, t;
                    return e = a.call(this, 8), "IHDR" == e.type ? (t = e.start, {
                        width: u.LONG(t),
                        height: u.LONG(t += 4)
                    }) : null;
                }
                function o() {
                    u && (u.init(null), s = d = c = l = u = null);
                }
                function a(e) {
                    var t, n, i, r;
                    return t = u.LONG(e), n = u.STRING(e += 4, 4), i = e += 4, r = u.LONG(e + t), {
                        length: t,
                        type: n,
                        start: i,
                        CRC: r
                    };
                }
                var s, u, c, l, d;
                s = i, u = new n(), u.init(s), function() {
                    var t = 0, n = 0, i = [ 35152, 20039, 3338, 6666 ];
                    for (n = 0; n < i.length; n++, t += 2) if (i[n] != u.SHORT(t)) throw new e.ImageError(e.ImageError.WRONG_FORMAT);
                }(), d = r.call(this), t.extend(this, {
                    type: "image/png",
                    size: s.length,
                    width: d.width,
                    height: d.height,
                    purge: function() {
                        o.call(this);
                    }
                }), o.call(this);
            }
            return i;
        }), i(G, [ u, h, B, z ], function(e, t, n, i) {
            return function(r) {
                var o = [ n, i ], a;
                a = function() {
                    for (var e = 0; e < o.length; e++) try {
                        return new o[e](r);
                    } catch (n) {}
                    throw new t.ImageError(t.ImageError.WRONG_FORMAT);
                }(), e.extend(this, {
                    type: "",
                    size: 0,
                    width: 0,
                    height: 0,
                    setExif: function() {},
                    writeHeaders: function(e) {
                        return e;
                    },
                    stripHeaders: function(e) {
                        return e;
                    },
                    purge: function() {}
                }), e.extend(this, a), this.purge = function() {
                    a.purge(), a = null;
                };
            };
        }), i(q, [], function() {
            function e(e, i, r) {
                var o = e.naturalWidth, a = e.naturalHeight, s = r.width, u = r.height, c = r.x || 0, l = r.y || 0, d = i.getContext("2d");
                t(e) && (o /= 2, a /= 2);
                var f = 1024, h = document.createElement("canvas");
                h.width = h.height = f;
                for (var p = h.getContext("2d"), m = n(e, o, a), g = 0; a > g; ) {
                    for (var v = g + f > a ? a - g : f, y = 0; o > y; ) {
                        var w = y + f > o ? o - y : f;
                        p.clearRect(0, 0, f, f), p.drawImage(e, -y, -g);
                        var E = y * s / o + c << 0, _ = Math.ceil(w * s / o), x = g * u / a / m + l << 0, b = Math.ceil(v * u / a / m);
                        d.drawImage(h, 0, 0, w, v, E, x, _, b), y += f;
                    }
                    g += f;
                }
                h = p = null;
            }
            function t(e) {
                var t = e.naturalWidth, n = e.naturalHeight;
                if (t * n > 1048576) {
                    var i = document.createElement("canvas");
                    i.width = i.height = 1;
                    var r = i.getContext("2d");
                    return r.drawImage(e, -t + 1, 0), 0 === r.getImageData(0, 0, 1, 1).data[3];
                }
                return !1;
            }
            function n(e, t, n) {
                var i = document.createElement("canvas");
                i.width = 1, i.height = n;
                var r = i.getContext("2d");
                r.drawImage(e, 0, 0);
                for (var o = r.getImageData(0, 0, 1, n).data, a = 0, s = n, u = n; u > a; ) {
                    var c = o[4 * (u - 1) + 3];
                    0 === c ? s = u : a = u, u = s + a >> 1;
                }
                i = null;
                var l = u / n;
                return 0 === l ? 1 : l;
            }
            return {
                isSubsampled: t,
                renderTo: e
            };
        }), i(X, [ D, u, h, m, w, G, q, l, d ], function(e, t, n, i, r, o, a, s, u) {
            function c() {
                function e() {
                    if (!E && !y) throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);
                    return E || y;
                }
                function c(e) {
                    return i.atob(e.substring(e.indexOf("base64,") + 7));
                }
                function l(e, t) {
                    return "data:" + (t || "") + ";base64," + i.btoa(e);
                }
                function d(e) {
                    var t = this;
                    y = new Image(), y.onerror = function() {
                        g.call(this), t.trigger("error", n.ImageError.WRONG_FORMAT);
                    }, y.onload = function() {
                        t.trigger("load");
                    }, y.src = /^data:[^;]*;base64,/.test(e) ? e : l(e, x.type);
                }
                function f(e, t) {
                    var i = this, r;
                    return window.FileReader ? (r = new FileReader(), r.onload = function() {
                        t(this.result);
                    }, r.onerror = function() {
                        i.trigger("error", n.ImageError.WRONG_FORMAT);
                    }, r.readAsDataURL(e), void 0) : t(e.getAsDataURL());
                }
                function h(n, i, r, o) {
                    var a = this, s, u, c = 0, l = 0, d, f, h, g;
                    if (R = o, g = this.meta && this.meta.tiff && this.meta.tiff.Orientation || 1, -1 !== t.inArray(g, [ 5, 6, 7, 8 ])) {
                        var v = n;
                        n = i, i = v;
                    }
                    return d = e(), r ? (n = Math.min(n, d.width), i = Math.min(i, d.height), s = Math.max(n / d.width, i / d.height)) : s = Math.min(n / d.width, i / d.height), 
                    s > 1 && !r && o ? void this.trigger("Resize") : (E || (E = document.createElement("canvas")), 
                    f = Math.round(d.width * s), h = Math.round(d.height * s), r ? (E.width = n, E.height = i, 
                    f > n && (c = Math.round((f - n) / 2)), h > i && (l = Math.round((h - i) / 2))) : (E.width = f, 
                    E.height = h), R || m(E.width, E.height, g), p.call(this, d, E, -c, -l, f, h), this.width = E.width, 
                    this.height = E.height, b = !0, void a.trigger("Resize"));
                }
                function p(e, t, n, i, r, o) {
                    if ("iOS" === u.OS) a.renderTo(e, t, {
                        width: r,
                        height: o,
                        x: n,
                        y: i
                    }); else {
                        var s = t.getContext("2d");
                        s.drawImage(e, n, i, r, o);
                    }
                }
                function m(e, t, n) {
                    switch (n) {
                      case 5:
                      case 6:
                      case 7:
                      case 8:
                        E.width = t, E.height = e;
                        break;

                      default:
                        E.width = e, E.height = t;
                    }
                    var i = E.getContext("2d");
                    switch (n) {
                      case 2:
                        i.translate(e, 0), i.scale(-1, 1);
                        break;

                      case 3:
                        i.translate(e, t), i.rotate(Math.PI);
                        break;

                      case 4:
                        i.translate(0, t), i.scale(1, -1);
                        break;

                      case 5:
                        i.rotate(.5 * Math.PI), i.scale(1, -1);
                        break;

                      case 6:
                        i.rotate(.5 * Math.PI), i.translate(0, -t);
                        break;

                      case 7:
                        i.rotate(.5 * Math.PI), i.translate(e, -t), i.scale(-1, 1);
                        break;

                      case 8:
                        i.rotate(-.5 * Math.PI), i.translate(-e, 0);
                    }
                }
                function g() {
                    w && (w.purge(), w = null), _ = y = E = x = null, b = !1;
                }
                var v = this, y, w, E, _, x, b = !1, R = !0;
                t.extend(this, {
                    loadFromBlob: function(e) {
                        var t = this, i = t.getRuntime(), r = arguments.length > 1 ? arguments[1] : !0;
                        if (!i.can("access_binary")) throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);
                        return x = e, e.isDetached() ? (_ = e.getSource(), void d.call(this, _)) : void f.call(this, e.getSource(), function(e) {
                            r && (_ = c(e)), d.call(t, e);
                        });
                    },
                    loadFromImage: function(e, t) {
                        this.meta = e.meta, x = new r(null, {
                            name: e.name,
                            size: e.size,
                            type: e.type
                        }), d.call(this, t ? _ = e.getAsBinaryString() : e.getAsDataURL());
                    },
                    getInfo: function() {
                        var t = this.getRuntime(), n;
                        return !w && _ && t.can("access_image_binary") && (w = new o(_)), n = {
                            width: e().width || 0,
                            height: e().height || 0,
                            type: x.type || s.getFileMime(x.name),
                            size: _ && _.length || x.size || 0,
                            name: x.name || "",
                            meta: w && w.meta || this.meta || {}
                        };
                    },
                    downsize: function() {
                        h.apply(this, arguments);
                    },
                    getAsCanvas: function() {
                        return E && (E.id = this.uid + "_canvas"), E;
                    },
                    getAsBlob: function(e, t) {
                        return e !== this.type && h.call(this, this.width, this.height, !1), new r(null, {
                            name: x.name || "",
                            type: e,
                            data: v.getAsBinaryString.call(this, e, t)
                        });
                    },
                    getAsDataURL: function(e) {
                        var t = arguments[1] || 90;
                        if (!b) return y.src;
                        if ("image/jpeg" !== e) return E.toDataURL("image/png");
                        try {
                            return E.toDataURL("image/jpeg", t / 100);
                        } catch (n) {
                            return E.toDataURL("image/jpeg");
                        }
                    },
                    getAsBinaryString: function(e, t) {
                        if (!b) return _ || (_ = c(v.getAsDataURL(e, t))), _;
                        if ("image/jpeg" !== e) _ = c(v.getAsDataURL(e, t)); else {
                            var n;
                            t || (t = 90);
                            try {
                                n = E.toDataURL("image/jpeg", t / 100);
                            } catch (i) {
                                n = E.toDataURL("image/jpeg");
                            }
                            _ = c(n), w && (_ = w.stripHeaders(_), R && (w.meta && w.meta.exif && w.setExif({
                                PixelXDimension: this.width,
                                PixelYDimension: this.height
                            }), _ = w.writeHeaders(_)), w.purge(), w = null);
                        }
                        return b = !1, _;
                    },
                    destroy: function() {
                        v = null, g.call(this), this.getRuntime().getShim().removeInstance(this.uid);
                    }
                });
            }
            return e.Image = c;
        }), i(j, [ u, d, f, h, g ], function(e, t, n, i, r) {
            function o() {
                var e;
                try {
                    e = navigator.plugins["Shockwave Flash"], e = e.description;
                } catch (t) {
                    try {
                        e = new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version");
                    } catch (n) {
                        e = "0.0";
                    }
                }
                return e = e.match(/\d+/g), parseFloat(e[0] + "." + e[1]);
            }
            function a(a) {
                var c = this, l;
                a = e.extend({
                    swf_url: t.swf_url
                }, a), r.call(this, a, s, {
                    access_binary: function(e) {
                        return e && "browser" === c.mode;
                    },
                    access_image_binary: function(e) {
                        return e && "browser" === c.mode;
                    },
                    display_media: r.capTrue,
                    do_cors: r.capTrue,
                    drag_and_drop: !1,
                    report_upload_progress: function() {
                        return "client" === c.mode;
                    },
                    resize_image: r.capTrue,
                    return_response_headers: !1,
                    return_response_type: function(t) {
                        return "json" === t && window.JSON ? !0 : !e.arrayDiff(t, [ "", "text", "document" ]) || "browser" === c.mode;
                    },
                    return_status_code: function(t) {
                        return "browser" === c.mode || !e.arrayDiff(t, [ 200, 404 ]);
                    },
                    select_file: r.capTrue,
                    select_multiple: r.capTrue,
                    send_binary_string: function(e) {
                        return e && "browser" === c.mode;
                    },
                    send_browser_cookies: function(e) {
                        return e && "browser" === c.mode;
                    },
                    send_custom_headers: function(e) {
                        return e && "browser" === c.mode;
                    },
                    send_multipart: r.capTrue,
                    slice_blob: function(e) {
                        return e && "browser" === c.mode;
                    },
                    stream_upload: function(e) {
                        return e && "browser" === c.mode;
                    },
                    summon_file_dialog: !1,
                    upload_filesize: function(t) {
                        return e.parseSizeStr(t) <= 2097152 || "client" === c.mode;
                    },
                    use_http_method: function(t) {
                        return !e.arrayDiff(t, [ "GET", "POST" ]);
                    }
                }, {
                    access_binary: function(e) {
                        return e ? "browser" : "client";
                    },
                    access_image_binary: function(e) {
                        return e ? "browser" : "client";
                    },
                    report_upload_progress: function(e) {
                        return e ? "browser" : "client";
                    },
                    return_response_type: function(t) {
                        return e.arrayDiff(t, [ "", "text", "json", "document" ]) ? "browser" : [ "client", "browser" ];
                    },
                    return_status_code: function(t) {
                        return e.arrayDiff(t, [ 200, 404 ]) ? "browser" : [ "client", "browser" ];
                    },
                    send_binary_string: function(e) {
                        return e ? "browser" : "client";
                    },
                    send_browser_cookies: function(e) {
                        return e ? "browser" : "client";
                    },
                    send_custom_headers: function(e) {
                        return e ? "browser" : "client";
                    },
                    stream_upload: function(e) {
                        return e ? "client" : "browser";
                    },
                    upload_filesize: function(t) {
                        return e.parseSizeStr(t) >= 2097152 ? "client" : "browser";
                    }
                }, "client"), o() < 10 && (this.mode = !1), e.extend(this, {
                    getShim: function() {
                        return n.get(this.uid);
                    },
                    shimExec: function(e, t) {
                        var n = [].slice.call(arguments, 2);
                        return c.getShim().exec(this.uid, e, t, n);
                    },
                    init: function() {
                        var n, r, o;
                        o = this.getShimContainer(), e.extend(o.style, {
                            position: "absolute",
                            top: "-8px",
                            left: "-8px",
                            width: "9px",
                            height: "9px",
                            overflow: "hidden"
                        }), n = '<object id="' + this.uid + '" type="application/x-shockwave-flash" data="' + a.swf_url + '" ', 
                        "IE" === t.browser && (n += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '), 
                        n += 'width="100%" height="100%" style="outline:0"><param name="movie" value="' + a.swf_url + '" /><param name="flashvars" value="uid=' + escape(this.uid) + "&target=" + t.global_event_dispatcher + '" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>', 
                        "IE" === t.browser ? (r = document.createElement("div"), o.appendChild(r), r.outerHTML = n, 
                        r = o = null) : o.innerHTML = n, l = setTimeout(function() {
                            c && !c.initialized && c.trigger("Error", new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR));
                        }, 5e3);
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(c), clearTimeout(l), a = l = e = c = null;
                        };
                    }(this.destroy)
                }, u);
            }
            var s = "flash", u = {};
            return r.addConstructor(s, a), u;
        }), i(V, [ j, y ], function(e, t) {
            var n = {
                slice: function(e, n, i, r) {
                    var o = this.getRuntime();
                    return 0 > n ? n = Math.max(e.size + n, 0) : n > 0 && (n = Math.min(n, e.size)), 
                    0 > i ? i = Math.max(e.size + i, 0) : i > 0 && (i = Math.min(i, e.size)), e = o.shimExec.call(this, "Blob", "slice", n, i, r || ""), 
                    e && (e = new t(o.uid, e)), e;
                }
            };
            return e.Blob = n;
        }), i(W, [ j ], function(e) {
            var t = {
                init: function(e) {
                    this.getRuntime().shimExec.call(this, "FileInput", "init", {
                        name: e.name,
                        accept: e.accept,
                        multiple: e.multiple
                    }), this.trigger("ready");
                }
            };
            return e.FileInput = t;
        }), i(Y, [ j, m ], function(e, t) {
            function n(e, n) {
                switch (n) {
                  case "readAsText":
                    return t.atob(e, "utf8");

                  case "readAsBinaryString":
                    return t.atob(e);

                  case "readAsDataURL":
                    return e;
                }
                return null;
            }
            var i = "", r = {
                read: function(e, t) {
                    var r = this, o = r.getRuntime();
                    return "readAsDataURL" === e && (i = "data:" + (t.type || "") + ";base64,"), r.bind("Progress", function(t, r) {
                        r && (i += n(r, e));
                    }), o.shimExec.call(this, "FileReader", "readAsBase64", t.uid);
                },
                getResult: function() {
                    return i;
                },
                destroy: function() {
                    i = null;
                }
            };
            return e.FileReader = r;
        }), i($, [ j, m ], function(e, t) {
            function n(e, n) {
                switch (n) {
                  case "readAsText":
                    return t.atob(e, "utf8");

                  case "readAsBinaryString":
                    return t.atob(e);

                  case "readAsDataURL":
                    return e;
                }
                return null;
            }
            var i = {
                read: function(e, t) {
                    var i, r = this.getRuntime();
                    return (i = r.shimExec.call(this, "FileReaderSync", "readAsBase64", t.uid)) ? ("readAsDataURL" === e && (i = "data:" + (t.type || "") + ";base64," + i), 
                    n(i, e, t.type)) : null;
                }
            };
            return e.FileReaderSync = i;
        }), i(J, [ j, u, y, w, T, A, O ], function(e, t, n, i, r, o, a) {
            var s = {
                send: function(e, i) {
                    function r() {
                        e.transport = l.mode, l.shimExec.call(c, "XMLHttpRequest", "send", e, i);
                    }
                    function s(e, t) {
                        l.shimExec.call(c, "XMLHttpRequest", "appendBlob", e, t.uid), i = null, r();
                    }
                    function u(e, t) {
                        var n = new a();
                        n.bind("TransportingComplete", function() {
                            t(this.result);
                        }), n.transport(e.getSource(), e.type, {
                            ruid: l.uid
                        });
                    }
                    var c = this, l = c.getRuntime();
                    if (t.isEmptyObj(e.headers) || t.each(e.headers, function(e, t) {
                        l.shimExec.call(c, "XMLHttpRequest", "setRequestHeader", t, e.toString());
                    }), i instanceof o) {
                        var d;
                        if (i.each(function(e, t) {
                            e instanceof n ? d = t : l.shimExec.call(c, "XMLHttpRequest", "append", t, e);
                        }), i.hasBlob()) {
                            var f = i.getBlob();
                            f.isDetached() ? u(f, function(e) {
                                f.destroy(), s(d, e);
                            }) : s(d, f);
                        } else i = null, r();
                    } else i instanceof n ? i.isDetached() ? u(i, function(e) {
                        i.destroy(), i = e.uid, r();
                    }) : (i = i.uid, r()) : r();
                },
                getResponse: function(e) {
                    var n, o, a = this.getRuntime();
                    if (o = a.shimExec.call(this, "XMLHttpRequest", "getResponseAsBlob")) {
                        if (o = new i(a.uid, o), "blob" === e) return o;
                        try {
                            if (n = new r(), ~t.inArray(e, [ "", "text" ])) return n.readAsText(o);
                            if ("json" === e && window.JSON) return JSON.parse(n.readAsText(o));
                        } finally {
                            o.destroy();
                        }
                    }
                    return null;
                },
                abort: function(e) {
                    var t = this.getRuntime();
                    t.shimExec.call(this, "XMLHttpRequest", "abort"), this.dispatchEvent("readystatechange"), 
                    this.dispatchEvent("abort");
                }
            };
            return e.XMLHttpRequest = s;
        }), i(Z, [ j, y ], function(e, t) {
            var n = {
                getAsBlob: function(e) {
                    var n = this.getRuntime(), i = n.shimExec.call(this, "Transporter", "getAsBlob", e);
                    return i ? new t(n.uid, i) : null;
                }
            };
            return e.Transporter = n;
        }), i(K, [ j, u, O, y, T ], function(e, t, n, i, r) {
            var o = {
                loadFromBlob: function(e) {
                    function t(e) {
                        r.shimExec.call(i, "Image", "loadFromBlob", e.uid), i = r = null;
                    }
                    var i = this, r = i.getRuntime();
                    if (e.isDetached()) {
                        var o = new n();
                        o.bind("TransportingComplete", function() {
                            t(o.result.getSource());
                        }), o.transport(e.getSource(), e.type, {
                            ruid: r.uid
                        });
                    } else t(e.getSource());
                },
                loadFromImage: function(e) {
                    var t = this.getRuntime();
                    return t.shimExec.call(this, "Image", "loadFromImage", e.uid);
                },
                getAsBlob: function(e, t) {
                    var n = this.getRuntime(), r = n.shimExec.call(this, "Image", "getAsBlob", e, t);
                    return r ? new i(n.uid, r) : null;
                },
                getAsDataURL: function() {
                    var e = this.getRuntime(), t = e.Image.getAsBlob.apply(this, arguments), n;
                    return t ? (n = new r(), n.readAsDataURL(t)) : null;
                }
            };
            return e.Image = o;
        }), i(Q, [ u, d, f, h, g ], function(e, t, n, i, r) {
            function o(e) {
                var t = !1, n = null, i, r, o, a, s, u = 0;
                try {
                    try {
                        n = new ActiveXObject("AgControl.AgControl"), n.IsVersionSupported(e) && (t = !0), 
                        n = null;
                    } catch (c) {
                        var l = navigator.plugins["Silverlight Plug-In"];
                        if (l) {
                            for (i = l.description, "1.0.30226.2" === i && (i = "2.0.30226.2"), r = i.split("."); r.length > 3; ) r.pop();
                            for (;r.length < 4; ) r.push(0);
                            for (o = e.split("."); o.length > 4; ) o.pop();
                            do a = parseInt(o[u], 10), s = parseInt(r[u], 10), u++; while (u < o.length && a === s);
                            s >= a && !isNaN(a) && (t = !0);
                        }
                    }
                } catch (d) {
                    t = !1;
                }
                return t;
            }
            function a(a) {
                var c = this, l;
                a = e.extend({
                    xap_url: t.xap_url
                }, a), r.call(this, a, s, {
                    access_binary: r.capTrue,
                    access_image_binary: r.capTrue,
                    display_media: r.capTrue,
                    do_cors: r.capTrue,
                    drag_and_drop: !1,
                    report_upload_progress: r.capTrue,
                    resize_image: r.capTrue,
                    return_response_headers: function(e) {
                        return e && "client" === c.mode;
                    },
                    return_response_type: function(e) {
                        return "json" !== e ? !0 : !!window.JSON;
                    },
                    return_status_code: function(t) {
                        return "client" === c.mode || !e.arrayDiff(t, [ 200, 404 ]);
                    },
                    select_file: r.capTrue,
                    select_multiple: r.capTrue,
                    send_binary_string: r.capTrue,
                    send_browser_cookies: function(e) {
                        return e && "browser" === c.mode;
                    },
                    send_custom_headers: function(e) {
                        return e && "client" === c.mode;
                    },
                    send_multipart: r.capTrue,
                    slice_blob: r.capTrue,
                    stream_upload: !0,
                    summon_file_dialog: !1,
                    upload_filesize: r.capTrue,
                    use_http_method: function(t) {
                        return "client" === c.mode || !e.arrayDiff(t, [ "GET", "POST" ]);
                    }
                }, {
                    return_response_headers: function(e) {
                        return e ? "client" : "browser";
                    },
                    return_status_code: function(t) {
                        return e.arrayDiff(t, [ 200, 404 ]) ? "client" : [ "client", "browser" ];
                    },
                    send_browser_cookies: function(e) {
                        return e ? "browser" : "client";
                    },
                    send_custom_headers: function(e) {
                        return e ? "client" : "browser";
                    },
                    use_http_method: function(t) {
                        return e.arrayDiff(t, [ "GET", "POST" ]) ? "client" : [ "client", "browser" ];
                    }
                }), o("2.0.31005.0") && "Opera" !== t.browser || (this.mode = !1), e.extend(this, {
                    getShim: function() {
                        return n.get(this.uid).content.Moxie;
                    },
                    shimExec: function(e, t) {
                        var n = [].slice.call(arguments, 2);
                        return c.getShim().exec(this.uid, e, t, n);
                    },
                    init: function() {
                        var e;
                        e = this.getShimContainer(), e.innerHTML = '<object id="' + this.uid + '" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;"><param name="source" value="' + a.xap_url + '"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="uid=' + this.uid + ",target=" + t.global_event_dispatcher + '"/></object>', 
                        l = setTimeout(function() {
                            c && !c.initialized && c.trigger("Error", new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR));
                        }, "Windows" !== t.OS ? 1e4 : 5e3);
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(c), clearTimeout(l), a = l = e = c = null;
                        };
                    }(this.destroy)
                }, u);
            }
            var s = "silverlight", u = {};
            return r.addConstructor(s, a), u;
        }), i(et, [ Q, u, V ], function(e, t, n) {
            return e.Blob = t.extend({}, n);
        }), i(tt, [ Q ], function(e) {
            var t = {
                init: function(e) {
                    function t(e) {
                        for (var t = "", n = 0; n < e.length; n++) t += ("" !== t ? "|" : "") + e[n].title + " | *." + e[n].extensions.replace(/,/g, ";*.");
                        return t;
                    }
                    this.getRuntime().shimExec.call(this, "FileInput", "init", t(e.accept), e.name, e.multiple), 
                    this.trigger("ready");
                }
            };
            return e.FileInput = t;
        }), i(nt, [ Q, f, L ], function(e, t, n) {
            var i = {
                init: function() {
                    var e = this, i = e.getRuntime(), r;
                    return r = i.getShimContainer(), n.addEvent(r, "dragover", function(e) {
                        e.preventDefault(), e.stopPropagation(), e.dataTransfer.dropEffect = "copy";
                    }, e.uid), n.addEvent(r, "dragenter", function(e) {
                        e.preventDefault();
                        var n = t.get(i.uid).dragEnter(e);
                        n && e.stopPropagation();
                    }, e.uid), n.addEvent(r, "drop", function(e) {
                        e.preventDefault();
                        var n = t.get(i.uid).dragDrop(e);
                        n && e.stopPropagation();
                    }, e.uid), i.shimExec.call(this, "FileDrop", "init");
                }
            };
            return e.FileDrop = i;
        }), i(it, [ Q, u, Y ], function(e, t, n) {
            return e.FileReader = t.extend({}, n);
        }), i(rt, [ Q, u, $ ], function(e, t, n) {
            return e.FileReaderSync = t.extend({}, n);
        }), i(ot, [ Q, u, J ], function(e, t, n) {
            return e.XMLHttpRequest = t.extend({}, n);
        }), i(at, [ Q, u, Z ], function(e, t, n) {
            return e.Transporter = t.extend({}, n);
        }), i(st, [ Q, u, K ], function(e, t, n) {
            return e.Image = t.extend({}, n, {
                getInfo: function() {
                    var e = this.getRuntime(), n = [ "tiff", "exif", "gps" ], i = {
                        meta: {}
                    }, r = e.shimExec.call(this, "Image", "getInfo");
                    return r.meta && t.each(n, function(e) {
                        var t = r.meta[e], n, o, a, s;
                        if (t && t.keys) for (i.meta[e] = {}, o = 0, a = t.keys.length; a > o; o++) n = t.keys[o], 
                        s = t[n], s && (/^(\d|[1-9]\d+)$/.test(s) ? s = parseInt(s, 10) : /^\d*\.\d+$/.test(s) && (s = parseFloat(s)), 
                        i.meta[e][n] = s);
                    }), i.width = parseInt(r.width, 10), i.height = parseInt(r.height, 10), i.size = parseInt(r.size, 10), 
                    i.type = r.type, i.name = r.name, i;
                }
            });
        }), i(ut, [ u, h, g, d ], function(e, t, n, i) {
            function r(t) {
                var r = this, s = n.capTest, u = n.capTrue;
                n.call(this, t, o, {
                    access_binary: s(window.FileReader || window.File && File.getAsDataURL),
                    access_image_binary: !1,
                    display_media: s(a.Image && (i.can("create_canvas") || i.can("use_data_uri_over32kb"))),
                    do_cors: !1,
                    drag_and_drop: !1,
                    filter_by_extension: s(function() {
                        return "Chrome" === i.browser && i.version >= 28 || "IE" === i.browser && i.version >= 10;
                    }()),
                    resize_image: function() {
                        return a.Image && r.can("access_binary") && i.can("create_canvas");
                    },
                    report_upload_progress: !1,
                    return_response_headers: !1,
                    return_response_type: function(t) {
                        return "json" === t && window.JSON ? !0 : !!~e.inArray(t, [ "text", "document", "" ]);
                    },
                    return_status_code: function(t) {
                        return !e.arrayDiff(t, [ 200, 404 ]);
                    },
                    select_file: function() {
                        return i.can("use_fileinput");
                    },
                    select_multiple: !1,
                    send_binary_string: !1,
                    send_custom_headers: !1,
                    send_multipart: !0,
                    slice_blob: !1,
                    stream_upload: function() {
                        return r.can("select_file");
                    },
                    summon_file_dialog: s(function() {
                        return "Firefox" === i.browser && i.version >= 4 || "Opera" === i.browser && i.version >= 12 || !!~e.inArray(i.browser, [ "Chrome", "Safari" ]);
                    }()),
                    upload_filesize: u,
                    use_http_method: function(t) {
                        return !e.arrayDiff(t, [ "GET", "POST" ]);
                    }
                }), e.extend(this, {
                    init: function() {
                        this.trigger("Init");
                    },
                    destroy: function(e) {
                        return function() {
                            e.call(r), e = r = null;
                        };
                    }(this.destroy)
                }), e.extend(this.getShim(), a);
            }
            var o = "html4", a = {};
            return n.addConstructor(o, r), a;
        }), i(ct, [ ut, u, f, L, l, d ], function(e, t, n, i, r, o) {
            function a() {
                function e() {
                    var r = this, l = r.getRuntime(), d, f, h, p, m, g;
                    g = t.guid("uid_"), d = l.getShimContainer(), a && (h = n.get(a + "_form"), h && t.extend(h.style, {
                        top: "100%"
                    })), p = document.createElement("form"), p.setAttribute("id", g + "_form"), p.setAttribute("method", "post"), 
                    p.setAttribute("enctype", "multipart/form-data"), p.setAttribute("encoding", "multipart/form-data"), 
                    t.extend(p.style, {
                        overflow: "hidden",
                        position: "absolute",
                        top: 0,
                        left: 0,
                        width: "100%",
                        height: "100%"
                    }), m = document.createElement("input"), m.setAttribute("id", g), m.setAttribute("type", "file"), 
                    m.setAttribute("name", c.name || "Filedata"), m.setAttribute("accept", u.join(",")), 
                    t.extend(m.style, {
                        fontSize: "999px",
                        opacity: 0
                    }), p.appendChild(m), d.appendChild(p), t.extend(m.style, {
                        position: "absolute",
                        top: 0,
                        left: 0,
                        width: "100%",
                        height: "100%"
                    }), "IE" === o.browser && o.version < 10 && t.extend(m.style, {
                        filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=0)"
                    }), m.onchange = function() {
                        var t;
                        this.value && (t = this.files ? this.files[0] : {
                            name: this.value
                        }, s = [ t ], this.onchange = function() {}, e.call(r), r.bind("change", function i() {
                            var e = n.get(g), t = n.get(g + "_form"), o;
                            r.unbind("change", i), r.files.length && e && t && (o = r.files[0], e.setAttribute("id", o.uid), 
                            t.setAttribute("id", o.uid + "_form"), t.setAttribute("target", o.uid + "_iframe")), 
                            e = t = null;
                        }, 998), m = p = null, r.trigger("change"));
                    }, l.can("summon_file_dialog") && (f = n.get(c.browse_button), i.removeEvent(f, "click", r.uid), 
                    i.addEvent(f, "click", function(e) {
                        m && !m.disabled && m.click(), e.preventDefault();
                    }, r.uid)), a = g, d = h = f = null;
                }
                var a, s = [], u = [], c;
                t.extend(this, {
                    init: function(t) {
                        var o = this, a = o.getRuntime(), s;
                        c = t, u = t.accept.mimes || r.extList2mimes(t.accept, a.can("filter_by_extension")), 
                        s = a.getShimContainer(), function() {
                            var e, r, u;
                            e = n.get(t.browse_button), a.can("summon_file_dialog") && ("static" === n.getStyle(e, "position") && (e.style.position = "relative"), 
                            r = parseInt(n.getStyle(e, "z-index"), 10) || 1, e.style.zIndex = r, s.style.zIndex = r - 1), 
                            u = a.can("summon_file_dialog") ? e : s, i.addEvent(u, "mouseover", function() {
                                o.trigger("mouseenter");
                            }, o.uid), i.addEvent(u, "mouseout", function() {
                                o.trigger("mouseleave");
                            }, o.uid), i.addEvent(u, "mousedown", function() {
                                o.trigger("mousedown");
                            }, o.uid), i.addEvent(n.get(t.container), "mouseup", function() {
                                o.trigger("mouseup");
                            }, o.uid), e = null;
                        }(), e.call(this), s = null, o.trigger({
                            type: "ready",
                            async: !0
                        });
                    },
                    getFiles: function() {
                        return s;
                    },
                    disable: function(e) {
                        var t;
                        (t = n.get(a)) && (t.disabled = !!e);
                    },
                    destroy: function() {
                        var e = this.getRuntime(), t = e.getShim(), r = e.getShimContainer();
                        i.removeAllEvents(r, this.uid), i.removeAllEvents(c && n.get(c.container), this.uid), 
                        i.removeAllEvents(c && n.get(c.browse_button), this.uid), r && (r.innerHTML = ""), 
                        t.removeInstance(this.uid), a = s = u = c = r = t = null;
                    }
                });
            }
            return e.FileInput = a;
        }), i(lt, [ ut, F ], function(e, t) {
            return e.FileReader = t;
        }), i(dt, [ ut, u, f, R, h, L, y, A ], function(e, t, n, i, r, o, a, s) {
            function u() {
                function e(e) {
                    var t = this, i, r, a, s, u = !1;
                    if (l) {
                        if (i = l.id.replace(/_iframe$/, ""), r = n.get(i + "_form")) {
                            for (a = r.getElementsByTagName("input"), s = a.length; s--; ) switch (a[s].getAttribute("type")) {
                              case "hidden":
                                a[s].parentNode.removeChild(a[s]);
                                break;

                              case "file":
                                u = !0;
                            }
                            a = [], u || r.parentNode.removeChild(r), r = null;
                        }
                        setTimeout(function() {
                            o.removeEvent(l, "load", t.uid), l.parentNode && l.parentNode.removeChild(l);
                            var n = t.getRuntime().getShimContainer();
                            n.children.length || n.parentNode.removeChild(n), n = l = null, e();
                        }, 1);
                    }
                }
                var u, c, l;
                t.extend(this, {
                    send: function(d, f) {
                        function h() {
                            var n = m.getShimContainer() || document.body, r = document.createElement("div");
                            r.innerHTML = '<iframe id="' + g + '_iframe" name="' + g + '_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>', 
                            l = r.firstChild, n.appendChild(l), o.addEvent(l, "load", function() {
                                var n;
                                try {
                                    n = l.contentWindow.document || l.contentDocument || window.frames[l.id].document, 
                                    /^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title) ? u = n.title.replace(/^(\d+).*$/, "$1") : (u = 200, 
                                    c = t.trim(n.body.innerHTML), p.trigger({
                                        type: "progress",
                                        loaded: c.length,
                                        total: c.length
                                    }), w && p.trigger({
                                        type: "uploadprogress",
                                        loaded: w.size || 1025,
                                        total: w.size || 1025
                                    }));
                                } catch (r) {
                                    if (!i.hasSameOrigin(d.url)) return void e.call(p, function() {
                                        p.trigger("error");
                                    });
                                    u = 404;
                                }
                                e.call(p, function() {
                                    p.trigger("load");
                                });
                            }, p.uid);
                        }
                        var p = this, m = p.getRuntime(), g, v, y, w;
                        if (u = c = null, f instanceof s && f.hasBlob()) {
                            if (w = f.getBlob(), g = w.uid, y = n.get(g), v = n.get(g + "_form"), !v) throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);
                        } else g = t.guid("uid_"), v = document.createElement("form"), v.setAttribute("id", g + "_form"), 
                        v.setAttribute("method", d.method), v.setAttribute("enctype", "multipart/form-data"), 
                        v.setAttribute("encoding", "multipart/form-data"), v.setAttribute("target", g + "_iframe"), 
                        m.getShimContainer().appendChild(v);
                        f instanceof s && f.each(function(e, n) {
                            if (e instanceof a) y && y.setAttribute("name", n); else {
                                var i = document.createElement("input");
                                t.extend(i, {
                                    type: "hidden",
                                    name: n,
                                    value: e
                                }), y ? v.insertBefore(i, y) : v.appendChild(i);
                            }
                        }), v.setAttribute("action", d.url), h(), v.submit(), p.trigger("loadstart");
                    },
                    getStatus: function() {
                        return u;
                    },
                    getResponse: function(e) {
                        if ("json" === e && "string" === t.typeOf(c) && window.JSON) try {
                            return JSON.parse(c.replace(/^\s*<pre[^>]*>/, "").replace(/<\/pre>\s*$/, ""));
                        } catch (n) {
                            return null;
                        }
                        return c;
                    },
                    abort: function() {
                        var t = this;
                        l && l.contentWindow && (l.contentWindow.stop ? l.contentWindow.stop() : l.contentWindow.document.execCommand ? l.contentWindow.document.execCommand("Stop") : l.src = "about:blank"), 
                        e.call(this, function() {
                            t.dispatchEvent("abort");
                        });
                    }
                });
            }
            return e.XMLHttpRequest = u;
        }), i(ft, [ ut, X ], function(e, t) {
            return e.Image = t;
        }), a([ u, c, l, d, f, h, p, m, g, v, y, w, E, _, x, b, R, T, A, S, O, I, L ]);
    }(this);
    (function(e) {
        "use strict";
        var t = {}, n = e.moxie.core.utils.Basic.inArray;
        return function r(e) {
            var i, s;
            for (i in e) s = typeof e[i], s === "object" && !~n(i, [ "Exceptions", "Env", "Mime" ]) ? r(e[i]) : s === "function" && (t[i] = e[i]);
        }(e.moxie), t.Env = e.moxie.core.utils.Env, t.Mime = e.moxie.core.utils.Mime, t.Exceptions = e.moxie.core.Exceptions, 
        e.mOxie = t, e.o || (e.o = t), t;
    })(this);
    (function(e, t, n) {
        function s(e) {
            function r(e, t, r) {
                var i = {
                    chunks: "slice_blob",
                    jpgresize: "send_binary_string",
                    pngresize: "send_binary_string",
                    progress: "report_upload_progress",
                    multi_selection: "select_multiple",
                    dragdrop: "drag_and_drop",
                    drop_element: "drag_and_drop",
                    headers: "send_custom_headers",
                    urlstream_upload: "send_binary_string",
                    canSendBinary: "send_binary",
                    triggerDialog: "summon_file_dialog"
                };
                i[e] ? n[i[e]] = t : r || (n[e] = t);
            }
            var t = e.required_features, n = {};
            if (typeof t == "string") o.each(t.split(/\s*,\s*/), function(e) {
                r(e, !0);
            }); else if (typeof t == "object") o.each(t, function(e, t) {
                r(t, e);
            }); else if (t === !0) {
                e.chunk_size > 0 && (n.slice_blob = !0);
                if (e.resize.enabled || !e.multipart) n.send_binary_string = !0;
                o.each(e, function(e, t) {
                    r(t, !!e, !0);
                });
            }
            return n;
        }
        var r = e.setTimeout, i = {}, o = {
            VERSION: "2.1.2",
            STOPPED: 1,
            STARTED: 2,
            QUEUED: 1,
            UPLOADING: 2,
            FAILED: 4,
            DONE: 5,
            GENERIC_ERROR: -100,
            HTTP_ERROR: -200,
            IO_ERROR: -300,
            SECURITY_ERROR: -400,
            INIT_ERROR: -500,
            FILE_SIZE_ERROR: -600,
            FILE_EXTENSION_ERROR: -601,
            FILE_DUPLICATE_ERROR: -602,
            IMAGE_FORMAT_ERROR: -700,
            MEMORY_ERROR: -701,
            IMAGE_DIMENSIONS_ERROR: -702,
            mimeTypes: t.mimes,
            ua: t.ua,
            typeOf: t.typeOf,
            extend: t.extend,
            guid: t.guid,
            get: function(n) {
                var r = [], i;
                t.typeOf(n) !== "array" && (n = [ n ]);
                var s = n.length;
                while (s--) i = t.get(n[s]), i && r.push(i);
                return r.length ? r : null;
            },
            each: t.each,
            getPos: t.getPos,
            getSize: t.getSize,
            xmlEncode: function(e) {
                var t = {
                    "<": "lt",
                    ">": "gt",
                    "&": "amp",
                    '"': "quot",
                    "'": "#39"
                }, n = /[<>&\"\']/g;
                return e ? ("" + e).replace(n, function(e) {
                    return t[e] ? "&" + t[e] + ";" : e;
                }) : e;
            },
            toArray: t.toArray,
            inArray: t.inArray,
            addI18n: t.addI18n,
            translate: t.translate,
            isEmptyObj: t.isEmptyObj,
            hasClass: t.hasClass,
            addClass: t.addClass,
            removeClass: t.removeClass,
            getStyle: t.getStyle,
            addEvent: t.addEvent,
            removeEvent: t.removeEvent,
            removeAllEvents: t.removeAllEvents,
            cleanName: function(e) {
                var t, n;
                n = [ /[\300-\306]/g, "A", /[\340-\346]/g, "a", /\307/g, "C", /\347/g, "c", /[\310-\313]/g, "E", /[\350-\353]/g, "e", /[\314-\317]/g, "I", /[\354-\357]/g, "i", /\321/g, "N", /\361/g, "n", /[\322-\330]/g, "O", /[\362-\370]/g, "o", /[\331-\334]/g, "U", /[\371-\374]/g, "u" ];
                for (t = 0; t < n.length; t += 2) e = e.replace(n[t], n[t + 1]);
                return e = e.replace(/\s+/g, "_"), e = e.replace(/[^a-z0-9_\-\.]+/gi, ""), e;
            },
            buildUrl: function(e, t) {
                var n = "";
                return o.each(t, function(e, t) {
                    n += (n ? "&" : "") + encodeURIComponent(t) + "=" + encodeURIComponent(e);
                }), n && (e += (e.indexOf("?") > 0 ? "&" : "?") + n), e;
            },
            formatSize: function(e) {
                function t(e, t) {
                    return Math.round(e * Math.pow(10, t)) / Math.pow(10, t);
                }
                if (e === n || /\D/.test(e)) return o.translate("N/A");
                var r = Math.pow(1024, 4);
                return e > r ? t(e / r, 1) + " " + o.translate("tb") : e > (r /= 1024) ? t(e / r, 1) + " " + o.translate("gb") : e > (r /= 1024) ? t(e / r, 1) + " " + o.translate("mb") : e > 1024 ? Math.round(e / 1024) + " " + o.translate("kb") : e + " " + o.translate("b");
            },
            parseSize: t.parseSizeStr,
            predictRuntime: function(e, n) {
                var r, i;
                return r = new o.Uploader(e), i = t.Runtime.thatCan(r.getOption().required_features, n || e.runtimes), 
                r.destroy(), i;
            },
            addFileFilter: function(e, t) {
                i[e] = t;
            }
        };
        o.addFileFilter("mime_types", function(e, t, n) {
            e.length && !e.regexp.test(t.name) ? (this.trigger("Error", {
                code: o.FILE_EXTENSION_ERROR,
                message: o.translate("File extension error."),
                file: t
            }), n(!1)) : n(!0);
        }), o.addFileFilter("max_file_size", function(e, t, n) {
            var r;
            e = o.parseSize(e), t.size !== r && e && t.size > e ? (this.trigger("Error", {
                code: o.FILE_SIZE_ERROR,
                message: o.translate("File size error."),
                file: t
            }), n(!1)) : n(!0);
        }), o.addFileFilter("prevent_duplicates", function(e, t, n) {
            if (e) {
                var r = this.files.length;
                while (r--) if (t.name === this.files[r].name && t.size === this.files[r].size) {
                    this.trigger("Error", {
                        code: o.FILE_DUPLICATE_ERROR,
                        message: o.translate("Duplicate file error."),
                        file: t
                    }), n(!1);
                    return;
                }
            }
            n(!0);
        }), o.Uploader = function(e) {
            function g() {
                var e, t = 0, n;
                if (this.state == o.STARTED) {
                    for (n = 0; n < f.length; n++) !e && f[n].status == o.QUEUED ? (e = f[n], this.trigger("BeforeUpload", e) && (e.status = o.UPLOADING, 
                    this.trigger("UploadFile", e))) : t++;
                    t == f.length && (this.state !== o.STOPPED && (this.state = o.STOPPED, this.trigger("StateChanged")), 
                    this.trigger("UploadComplete", f));
                }
            }
            function y(e) {
                e.percent = e.size > 0 ? Math.ceil(e.loaded / e.size * 100) : 100, b();
            }
            function b() {
                var e, t;
                d.reset();
                for (e = 0; e < f.length; e++) t = f[e], t.size !== n ? (d.size += t.origSize, d.loaded += t.loaded * t.origSize / t.size) : d.size = n, 
                t.status == o.DONE ? d.uploaded++ : t.status == o.FAILED ? d.failed++ : d.queued++;
                d.size === n ? d.percent = f.length > 0 ? Math.ceil(d.uploaded / f.length * 100) : 0 : (d.bytesPerSec = Math.ceil(d.loaded / ((+new Date() - p || 1) / 1e3)), 
                d.percent = d.size > 0 ? Math.ceil(d.loaded / d.size * 100) : 0);
            }
            function w() {
                var e = c[0] || h[0];
                return e ? e.getRuntime().uid : !1;
            }
            function E(e, n) {
                if (e.ruid) {
                    var r = t.Runtime.getInfo(e.ruid);
                    if (r) return r.can(n);
                }
                return !1;
            }
            function S() {
                this.bind("FilesAdded FilesRemoved", function(e) {
                    e.trigger("QueueChanged"), e.refresh();
                }), this.bind("CancelUpload", O), this.bind("BeforeUpload", C), this.bind("UploadFile", k), 
                this.bind("UploadProgress", L), this.bind("StateChanged", A), this.bind("QueueChanged", b), 
                this.bind("Error", _), this.bind("FileUploaded", M), this.bind("Destroy", D);
            }
            function x(e, n) {
                var r = this, i = 0, s = [], u = {
                    runtime_order: e.runtimes,
                    required_caps: e.required_features,
                    preferred_caps: l,
                    swf_url: e.flash_swf_url,
                    xap_url: e.silverlight_xap_url
                };
                o.each(e.runtimes.split(/\s*,\s*/), function(t) {
                    e[t] && (u[t] = e[t]);
                }), e.browse_button && o.each(e.browse_button, function(n) {
                    s.push(function(s) {
                        var a = new t.FileInput(o.extend({}, u, {
                            accept: e.filters.mime_types,
                            name: e.file_data_name,
                            multiple: e.multi_selection,
                            container: e.container,
                            browse_button: n
                        }));
                        a.onready = function() {
                            var e = t.Runtime.getInfo(this.ruid);
                            t.extend(r.features, {
                                chunks: e.can("slice_blob"),
                                multipart: e.can("send_multipart"),
                                multi_selection: e.can("select_multiple")
                            }), i++, c.push(this), s();
                        }, a.onchange = function() {
                            r.addFile(this.files);
                        }, a.bind("mouseenter mouseleave mousedown mouseup", function(r) {
                            v || (e.browse_button_hover && ("mouseenter" === r.type ? t.addClass(n, e.browse_button_hover) : "mouseleave" === r.type && t.removeClass(n, e.browse_button_hover)), 
                            e.browse_button_active && ("mousedown" === r.type ? t.addClass(n, e.browse_button_active) : "mouseup" === r.type && t.removeClass(n, e.browse_button_active)));
                        }), a.bind("mousedown", function() {
                            r.trigger("Browse");
                        }), a.bind("error runtimeerror", function() {
                            a = null, s();
                        }), a.init();
                    });
                }), e.drop_element && o.each(e.drop_element, function(e) {
                    s.push(function(n) {
                        var s = new t.FileDrop(o.extend({}, u, {
                            drop_zone: e
                        }));
                        s.onready = function() {
                            var e = t.Runtime.getInfo(this.ruid);
                            r.features.dragdrop = e.can("drag_and_drop"), i++, h.push(this), n();
                        }, s.ondrop = function() {
                            r.addFile(this.files);
                        }, s.bind("error runtimeerror", function() {
                            s = null, n();
                        }), s.init();
                    });
                }), t.inSeries(s, function() {
                    typeof n == "function" && n(i);
                });
            }
            function T(e, r, i) {
                var s = new t.Image();
                try {
                    s.onload = function() {
                        if (r.width > this.width && r.height > this.height && r.quality === n && r.preserve_headers && !r.crop) return this.destroy(), 
                        i(e);
                        s.downsize(r.width, r.height, r.crop, r.preserve_headers);
                    }, s.onresize = function() {
                        i(this.getAsBlob(e.type, r.quality)), this.destroy();
                    }, s.onerror = function() {
                        i(e);
                    }, s.load(e);
                } catch (o) {
                    i(e);
                }
            }
            function N(e, n, r) {
                function f(e, t, n) {
                    var r = a[e];
                    switch (e) {
                      case "max_file_size":
                        e === "max_file_size" && (a.max_file_size = a.filters.max_file_size = t);
                        break;

                      case "chunk_size":
                        if (t = o.parseSize(t)) a[e] = t, a.send_file_name = !0;
                        break;

                      case "multipart":
                        a[e] = t, t || (a.send_file_name = !0);
                        break;

                      case "unique_names":
                        a[e] = t, t && (a.send_file_name = !0);
                        break;

                      case "filters":
                        o.typeOf(t) === "array" && (t = {
                            mime_types: t
                        }), n ? o.extend(a.filters, t) : a.filters = t, t.mime_types && (a.filters.mime_types.regexp = function(e) {
                            var t = [];
                            return o.each(e, function(e) {
                                o.each(e.extensions.split(/,/), function(e) {
                                    /^\s*\*\s*$/.test(e) ? t.push("\\.*") : t.push("\\." + e.replace(new RegExp("[" + "/^$.*+?|()[]{}\\".replace(/./g, "\\$&") + "]", "g"), "\\$&"));
                                });
                            }), new RegExp("(" + t.join("|") + ")$", "i");
                        }(a.filters.mime_types));
                        break;

                      case "resize":
                        n ? o.extend(a.resize, t, {
                            enabled: !0
                        }) : a.resize = t;
                        break;

                      case "prevent_duplicates":
                        a.prevent_duplicates = a.filters.prevent_duplicates = !!t;
                        break;

                      case "browse_button":
                      case "drop_element":
                        t = o.get(t);

                      case "container":
                      case "runtimes":
                      case "multi_selection":
                      case "flash_swf_url":
                      case "silverlight_xap_url":
                        a[e] = t, n || (u = !0);
                        break;

                      default:
                        a[e] = t;
                    }
                    n || i.trigger("OptionChanged", e, t, r);
                }
                var i = this, u = !1;
                typeof e == "object" ? o.each(e, function(e, t) {
                    f(t, e, r);
                }) : f(e, n, r), r ? (a.required_features = s(o.extend({}, a)), l = s(o.extend({}, a, {
                    required_features: !0
                }))) : u && (i.trigger("Destroy"), x.call(i, a, function(e) {
                    e ? (i.runtime = t.Runtime.getInfo(w()).type, i.trigger("Init", {
                        runtime: i.runtime
                    }), i.trigger("PostInit")) : i.trigger("Error", {
                        code: o.INIT_ERROR,
                        message: o.translate("Init error.")
                    });
                }));
            }
            function C(e, t) {
                if (e.settings.unique_names) {
                    var n = t.name.match(/\.([^.]+)$/), r = "part";
                    n && (r = n[1]), t.target_name = t.id + "." + r;
                }
            }
            function k(e, n) {
                function h() {
                    u-- > 0 ? r(p, 1e3) : (n.loaded = f, e.trigger("Error", {
                        code: o.HTTP_ERROR,
                        message: o.translate("HTTP Error."),
                        file: n,
                        response: m.responseText,
                        status: m.status,
                        responseHeaders: m.getAllResponseHeaders()
                    }));
                }
                function p() {
                    var d, v, g = {}, y;
                    if (n.status !== o.UPLOADING || e.state === o.STOPPED) return;
                    e.settings.send_file_name && (g.name = n.target_name || n.name), s && a.chunks && c.size > s ? (y = Math.min(s, c.size - f), 
                    d = c.slice(f, f + y)) : (y = c.size, d = c), s && a.chunks && (e.settings.send_chunk_number ? (g.chunk = Math.ceil(f / s), 
                    g.chunks = Math.ceil(c.size / s)) : (g.offset = f, g.total = c.size)), m = new t.XMLHttpRequest(), 
                    m.upload && (m.upload.onprogress = function(t) {
                        n.loaded = Math.min(n.size, f + t.loaded), e.trigger("UploadProgress", n);
                    }), m.onload = function() {
                        if (m.status >= 400) {
                            h();
                            return;
                        }
                        u = e.settings.max_retries, y < c.size ? (d.destroy(), f += y, n.loaded = Math.min(f, c.size), 
                        e.trigger("ChunkUploaded", n, {
                            offset: n.loaded,
                            total: c.size,
                            response: m.responseText,
                            status: m.status,
                            responseHeaders: m.getAllResponseHeaders()
                        }), t.Env.browser === "Android Browser" && e.trigger("UploadProgress", n)) : n.loaded = n.size, 
                        d = v = null, !f || f >= c.size ? (n.size != n.origSize && (c.destroy(), c = null), 
                        e.trigger("UploadProgress", n), n.status = o.DONE, e.trigger("FileUploaded", n, {
                            response: m.responseText,
                            status: m.status,
                            responseHeaders: m.getAllResponseHeaders()
                        })) : r(p, 1);
                    }, m.onerror = function() {
                        h();
                    }, m.onloadend = function() {
                        this.destroy(), m = null;
                    }, e.settings.multipart && a.multipart ? (m.open("post", i, !0), o.each(e.settings.headers, function(e, t) {
                        m.setRequestHeader(t, e);
                    }), v = new t.FormData(), o.each(o.extend(g, e.settings.multipart_params), function(e, t) {
                        v.append(t, e);
                    }), v.append(e.settings.file_data_name, d), m.send(v, {
                        runtime_order: e.settings.runtimes,
                        required_caps: e.settings.required_features,
                        preferred_caps: l,
                        swf_url: e.settings.flash_swf_url,
                        xap_url: e.settings.silverlight_xap_url
                    })) : (i = o.buildUrl(e.settings.url, o.extend(g, e.settings.multipart_params)), 
                    m.open("post", i, !0), m.setRequestHeader("Content-Type", "application/octet-stream"), 
                    o.each(e.settings.headers, function(e, t) {
                        m.setRequestHeader(t, e);
                    }), m.send(d, {
                        runtime_order: e.settings.runtimes,
                        required_caps: e.settings.required_features,
                        preferred_caps: l,
                        swf_url: e.settings.flash_swf_url,
                        xap_url: e.settings.silverlight_xap_url
                    }));
                }
                var i = e.settings.url, s = e.settings.chunk_size, u = e.settings.max_retries, a = e.features, f = 0, c;
                n.loaded && (f = n.loaded = s ? s * Math.floor(n.loaded / s) : 0), c = n.getSource(), 
                e.settings.resize.enabled && E(c, "send_binary_string") && !!~t.inArray(c.type, [ "image/jpeg", "image/png" ]) ? T.call(this, c, e.settings.resize, function(e) {
                    c = e, n.size = e.size, p();
                }) : p();
            }
            function L(e, t) {
                y(t);
            }
            function A(e) {
                if (e.state == o.STARTED) p = +new Date(); else if (e.state == o.STOPPED) for (var t = e.files.length - 1; t >= 0; t--) e.files[t].status == o.UPLOADING && (e.files[t].status = o.QUEUED, 
                b());
            }
            function O() {
                m && m.abort();
            }
            function M(e) {
                b(), r(function() {
                    g.call(e);
                }, 1);
            }
            function _(e, t) {
                t.code === o.INIT_ERROR ? e.destroy() : t.file && (t.file.status = o.FAILED, y(t.file), 
                e.state == o.STARTED && (e.trigger("CancelUpload"), r(function() {
                    g.call(e);
                }, 1)));
            }
            function D(e) {
                e.stop(), o.each(f, function(e) {
                    e.destroy();
                }), f = [], c.length && (o.each(c, function(e) {
                    e.destroy();
                }), c = []), h.length && (o.each(h, function(e) {
                    e.destroy();
                }), h = []), l = {}, v = !1, p = m = null, d.reset();
            }
            var u = o.guid(), a, f = [], l = {}, c = [], h = [], p, d, v = !1, m;
            a = {
                runtimes: t.Runtime.order,
                max_retries: 0,
                chunk_size: 0,
                multipart: !0,
                multi_selection: !0,
                file_data_name: "file",
                flash_swf_url: "js/Moxie.swf",
                silverlight_xap_url: "js/Moxie.xap",
                filters: {
                    mime_types: [],
                    prevent_duplicates: !1,
                    max_file_size: 0
                },
                resize: {
                    enabled: !1,
                    preserve_headers: !0,
                    crop: !1
                },
                send_file_name: !0,
                send_chunk_number: !0
            }, N.call(this, e, null, !0), d = new o.QueueProgress(), o.extend(this, {
                id: u,
                uid: u,
                state: o.STOPPED,
                features: {},
                runtime: null,
                files: f,
                settings: a,
                total: d,
                init: function() {
                    var e = this;
                    typeof a.preinit == "function" ? a.preinit(e) : o.each(a.preinit, function(t, n) {
                        e.bind(n, t);
                    }), S.call(this);
                    if (!a.browse_button || !a.url) {
                        this.trigger("Error", {
                            code: o.INIT_ERROR,
                            message: o.translate("Init error.")
                        });
                        return;
                    }
                    x.call(this, a, function(n) {
                        typeof a.init == "function" ? a.init(e) : o.each(a.init, function(t, n) {
                            e.bind(n, t);
                        }), n ? (e.runtime = t.Runtime.getInfo(w()).type, e.trigger("Init", {
                            runtime: e.runtime
                        }), e.trigger("PostInit")) : e.trigger("Error", {
                            code: o.INIT_ERROR,
                            message: o.translate("Init error.")
                        });
                    });
                },
                setOption: function(e, t) {
                    N.call(this, e, t, !this.runtime);
                },
                getOption: function(e) {
                    return e ? a[e] : a;
                },
                refresh: function() {
                    c.length && o.each(c, function(e) {
                        e.trigger("Refresh");
                    }), this.trigger("Refresh");
                },
                start: function() {
                    this.state != o.STARTED && (this.state = o.STARTED, this.trigger("StateChanged"), 
                    g.call(this));
                },
                stop: function() {
                    this.state != o.STOPPED && (this.state = o.STOPPED, this.trigger("StateChanged"), 
                    this.trigger("CancelUpload"));
                },
                disableBrowse: function() {
                    v = arguments[0] !== n ? arguments[0] : !0, c.length && o.each(c, function(e) {
                        e.disable(v);
                    }), this.trigger("DisableBrowse", v);
                },
                getFile: function(e) {
                    var t;
                    for (t = f.length - 1; t >= 0; t--) if (f[t].id === e) return f[t];
                },
                addFile: function(e, n) {
                    function c(e, n) {
                        var r = [];
                        t.each(s.settings.filters, function(t, n) {
                            i[n] && r.push(function(r) {
                                i[n].call(s, t, e, function(e) {
                                    r(!e);
                                });
                            });
                        }), t.inSeries(r, n);
                    }
                    function h(e) {
                        var i = t.typeOf(e);
                        if (e instanceof t.File) {
                            if (!e.ruid && !e.isDetached()) {
                                if (!l) return !1;
                                e.ruid = l, e.connectRuntime(l);
                            }
                            h(new o.File(e));
                        } else e instanceof t.Blob ? (h(e.getSource()), e.destroy()) : e instanceof o.File ? (n && (e.name = n), 
                        u.push(function(t) {
                            c(e, function(n) {
                                n || (f.push(e), a.push(e), s.trigger("FileFiltered", e)), r(t, 1);
                            });
                        })) : t.inArray(i, [ "file", "blob" ]) !== -1 ? h(new t.File(null, e)) : i === "node" && t.typeOf(e.files) === "filelist" ? t.each(e.files, h) : i === "array" && (n = null, 
                        t.each(e, h));
                    }
                    var s = this, u = [], a = [], l;
                    l = w(), h(e), u.length && t.inSeries(u, function() {
                        a.length && s.trigger("FilesAdded", a);
                    });
                },
                removeFile: function(e) {
                    var t = typeof e == "string" ? e : e.id;
                    for (var n = f.length - 1; n >= 0; n--) if (f[n].id === t) return this.splice(n, 1)[0];
                },
                splice: function(e, t) {
                    var r = f.splice(e === n ? 0 : e, t === n ? f.length : t), i = !1;
                    return this.state == o.STARTED && (o.each(r, function(e) {
                        if (e.status === o.UPLOADING) return i = !0, !1;
                    }), i && this.stop()), this.trigger("FilesRemoved", r), o.each(r, function(e) {
                        e.destroy();
                    }), i && this.start(), r;
                },
                bind: function(e, t, n) {
                    var r = this;
                    o.Uploader.prototype.bind.call(this, e, function() {
                        var e = [].slice.call(arguments);
                        return e.splice(0, 1, r), t.apply(this, e);
                    }, 0, n);
                },
                destroy: function() {
                    this.trigger("Destroy"), a = d = null, this.unbindAll();
                }
            });
        }, o.Uploader.prototype = t.EventTarget.instance, o.File = function() {
            function n(n) {
                o.extend(this, {
                    id: o.guid(),
                    name: n.name || n.fileName,
                    type: n.type || "",
                    size: n.size || n.fileSize,
                    origSize: n.size || n.fileSize,
                    loaded: 0,
                    percent: 0,
                    status: o.QUEUED,
                    lastModifiedDate: n.lastModifiedDate || new Date().toLocaleString(),
                    getNative: function() {
                        var e = this.getSource().getSource();
                        return t.inArray(t.typeOf(e), [ "blob", "file" ]) !== -1 ? e : null;
                    },
                    getSource: function() {
                        return e[this.id] ? e[this.id] : null;
                    },
                    destroy: function() {
                        var t = this.getSource();
                        t && (t.destroy(), delete e[this.id]);
                    }
                }), e[this.id] = n;
            }
            var e = {};
            return n;
        }(), o.QueueProgress = function() {
            var e = this;
            e.size = 0, e.loaded = 0, e.uploaded = 0, e.failed = 0, e.queued = 0, e.percent = 0, 
            e.bytesPerSec = 0, e.reset = function() {
                e.size = e.loaded = e.uploaded = e.failed = e.queued = e.percent = e.bytesPerSec = 0;
            };
        }, e.plupload = o;
    })(window, mOxie);
    // Chinese (China) (zh_CN)
    plupload.addI18n({
        "Stop Upload": "停止上传",
        "Upload URL might be wrong or doesn't exist.": "上传的URL可能是错误的或不存在。",
        tb: "tb",
        Size: "大小",
        Close: "关闭",
        "Init error.": "初始化错误。",
        "Add files to the upload queue and click the start button.": "将文件添加到上传队列，然后点击”开始上传“按钮。",
        Filename: "文件名",
        "Image format either wrong or not supported.": "图片格式错误或者不支持。",
        Status: "状态",
        "HTTP Error.": "HTTP 错误。",
        "Start Upload": "开始上传",
        mb: "mb",
        kb: "kb",
        "Duplicate file error.": "重复文件错误。",
        "File size error.": "文件大小错误。",
        "N/A": "N/A",
        gb: "gb",
        "Error: Invalid file extension:": "错误：无效的文件扩展名:",
        "Select files": "选择文件",
        "%s already present in the queue.": "%s 已经在当前队列里。",
        "File: %s": "文件: %s",
        b: "b",
        "Uploaded %d/%d files": "已上传 %d/%d 个文件",
        "Upload element accepts only %d file(s) at a time. Extra files were stripped.": "每次只接受同时上传 %d 个文件，多余的文件将会被删除。",
        "%d files queued": "%d 个文件加入到队列",
        "File: %s, size: %d, max file size: %d": "文件: %s, 大小: %d, 最大文件大小: %d",
        "Drag files here.": "把文件拖到这里。",
        "Runtime ran out of available memory.": "运行时已消耗所有可用内存。",
        "File count error.": "文件数量错误。",
        "File extension error.": "文件扩展名错误。",
        "Error: File too large:": "错误: 文件太大:",
        "Add Files": "增加文件"
    });
    (function(e, t) {
        function r(e) {
            return plupload.translate(e) || e;
        }
        function i(t, n) {
            n.contents().each(function(t, n) {
                n = e(n), n.is(".plupload") || n.remove();
            }), n.prepend('<div class="plupload_wrapper plupload_scroll"><div id="' + t + '_container" class="plupload_container">' + '<div class="plupload">' + '<div class="plupload_header">' + '<div class="plupload_header_content">' + '<div class="plupload_header_title">' + r("Select files") + "</div>" + '<div class="plupload_header_text">' + r("Add files to the upload queue and click the start button.") + "</div>" + "</div>" + "</div>" + '<div class="plupload_content">' + '<div class="plupload_filelist_header">' + '<div class="plupload_file_name">' + r("Filename") + "</div>" + '<div class="plupload_file_action">&nbsp;</div>' + '<div class="plupload_file_status"><span>' + r("Status") + "</span></div>" + '<div class="plupload_file_size">' + r("Size") + "</div>" + '<div class="plupload_clearer">&nbsp;</div>' + "</div>" + '<ul id="' + t + '_filelist" class="plupload_filelist"></ul>' + '<div class="plupload_filelist_footer">' + '<div class="plupload_file_name">' + '<div class="plupload_buttons">' + '<a href="#" class="plupload_button plupload_add" id="' + t + '_browse">' + r("Add Files") + "</a>" + '<a href="#" class="plupload_button plupload_start">' + r("Start Upload") + "</a>" + "</div>" + '<span class="plupload_upload_status"></span>' + "</div>" + '<div class="plupload_file_action"></div>' + '<div class="plupload_file_status"><span class="plupload_total_status">0%</span></div>' + '<div class="plupload_file_size"><span class="plupload_total_file_size">0 b</span></div>' + '<div class="plupload_progress">' + '<div class="plupload_progress_container">' + '<div class="plupload_progress_bar"></div>' + "</div>" + "</div>" + '<div class="plupload_clearer">&nbsp;</div>' + "</div>" + "</div>" + "</div>" + "</div>" + '<input type="hidden" id="' + t + '_count" name="' + t + '_count" value="0" />' + "</div>");
        }
        var n = {};
        e.fn.pluploadQueue = function(s) {
            return s ? (this.each(function() {
                function c(t) {
                    var n;
                    t.status == plupload.DONE && (n = "plupload_done"), t.status == plupload.FAILED && (n = "plupload_failed"), 
                    t.status == plupload.QUEUED && (n = "plupload_delete"), t.status == plupload.UPLOADING && (n = "plupload_uploading");
                    var r = e("#" + t.id).attr("class", n).find("a").css("display", "block");
                    t.hint && r.attr("title", t.hint);
                }
                function h() {
                    e("span.plupload_total_status", a).html(u.total.percent + "%"), e("div.plupload_progress_bar", a).css("width", u.total.percent + "%"), 
                    e("span.plupload_upload_status", a).html(t.sprintf(r("Uploaded %d/%d files"), u.total.uploaded, u.files.length));
                }
                function p() {
                    var n = e("ul.plupload_filelist", a).html(""), i = 0, s;
                    e.each(u.files, function(t, r) {
                        s = "", r.status == plupload.DONE && (r.target_name && (s += '<input type="hidden" name="' + f + "_" + i + '_tmpname" value="' + plupload.xmlEncode(r.target_name) + '" />'), 
                        s += '<input type="hidden" name="' + f + "_" + i + '_name" value="' + plupload.xmlEncode(r.name) + '" />', 
                        s += '<input type="hidden" name="' + f + "_" + i + '_status" value="' + (r.status == plupload.DONE ? "done" : "failed") + '" />', 
                        i++, e("#" + f + "_count").val(i)), n.append('<li id="' + r.id + '">' + '<div class="plupload_file_name"><span>' + r.name + "</span></div>" + '<div class="plupload_file_action"><a href="#"></a></div>' + '<div class="plupload_file_status">' + r.percent + "%</div>" + '<div class="plupload_file_size">' + plupload.formatSize(r.size) + "</div>" + '<div class="plupload_clearer">&nbsp;</div>' + s + "</li>"), 
                        c(r), e("#" + r.id + ".plupload_delete a").click(function(t) {
                            e("#" + r.id).remove(), u.removeFile(r), t.preventDefault();
                        });
                    }), e("span.plupload_total_file_size", a).html(plupload.formatSize(u.total.size)), 
                    u.total.queued === 0 ? e("span.plupload_add_text", a).html(r("Add Files")) : e("span.plupload_add_text", a).html(t.sprintf(r("%d files queued"), u.total.queued)), 
                    e("a.plupload_start", a).toggleClass("plupload_disabled", u.files.length == u.total.uploaded + u.total.failed), 
                    n[0].scrollTop = n[0].scrollHeight, h(), !u.files.length && u.features.dragdrop && u.settings.dragdrop && e("#" + f + "_filelist").append('<li class="plupload_droptext">' + r("Drag files here.") + "</li>");
                }
                function d() {
                    delete n[f], u.destroy(), a.html(l), u = a = l = null;
                }
                var u, a, f, l;
                a = e(this), f = a.attr("id"), f || (f = plupload.guid(), a.attr("id", f)), l = a.html(), 
                i(f, a), s = e.extend({
                    dragdrop: !0,
                    browse_button: f + "_browse",
                    container: f
                }, s), s.dragdrop && (s.drop_element = f + "_filelist"), u = new plupload.Uploader(s), 
                n[f] = u, u.bind("UploadFile", function(t, n) {
                    e("#" + n.id).addClass("plupload_current_file");
                }), u.bind("Init", function(t, n) {
                    !s.unique_names && s.rename && a.on("click", "#" + f + "_filelist div.plupload_file_name span", function(n) {
                        var r = e(n.target), i, s, o, u = "";
                        i = t.getFile(r.parents("li")[0].id), o = i.name, s = /^(.+)(\.[^.]+)$/.exec(o), 
                        s && (o = s[1], u = s[2]), r.hide().after('<input type="text" />'), r.next().val(o).focus().blur(function() {
                            r.show().next().remove();
                        }).keydown(function(t) {
                            var n = e(this);
                            t.keyCode == 13 && (t.preventDefault(), i.name = n.val() + u, r.html(i.name), n.blur());
                        });
                    }), e("#" + f + "_container").attr("title", "Using runtime: " + n.runtime), e("a.plupload_start", a).click(function(t) {
                        e(this).hasClass("plupload_disabled") || u.start(), t.preventDefault();
                    }), e("a.plupload_stop", a).click(function(e) {
                        e.preventDefault(), u.stop();
                    }), e("a.plupload_start", a).addClass("plupload_disabled");
                }), u.bind("Error", function(t, n) {
                    var i = n.file, s;
                    i && (s = n.message, n.details && (s += " (" + n.details + ")"), n.code == plupload.FILE_SIZE_ERROR && $dialog.alert(r("Error: File too large:") + " " + i.name, "warning"), 
                    n.code == plupload.FILE_EXTENSION_ERROR && $dialog.alert(r("Error: Invalid file extension:") + " " + i.name, "warning"), 
                    i.hint = s, e("#" + i.id).attr("class", "plupload_failed").find("a").css("display", "block").attr("title", s)), 
                    n.code === plupload.INIT_ERROR && setTimeout(function() {
                        d();
                    }, 1);
                }), u.bind("PostInit", function(t) {
                    t.settings.dragdrop && t.features.dragdrop && e("#" + f + "_filelist").append('<li class="plupload_droptext">' + r("Drag files here.") + "</li>");
                }), u.init(), u.bind("StateChanged", function() {
                    u.state === plupload.STARTED ? (e("li.plupload_delete a,div.plupload_buttons", a).hide(), 
                    u.disableBrowse(!0), e("span.plupload_upload_status,div.plupload_progress,a.plupload_stop", a).css("display", "block"), 
                    e("span.plupload_upload_status", a).html("Uploaded " + u.total.uploaded + "/" + u.files.length + " files"), 
                    s.multiple_queues && e("span.plupload_total_status,span.plupload_total_file_size", a).show()) : (p(), 
                    e("a.plupload_stop,div.plupload_progress", a).hide(), e("a.plupload_delete", a).css("display", "block"), 
                    s.multiple_queues && u.total.uploaded + u.total.failed == u.files.length && (e(".plupload_buttons,.plupload_upload_status", a).css("display", "inline"), 
                    u.disableBrowse(!1), e(".plupload_start", a).addClass("plupload_disabled"), e("span.plupload_total_status,span.plupload_total_file_size", a).hide()));
                }), u.bind("FilesAdded", p), u.bind("FilesRemoved", function() {
                    var t = e("#" + f + "_filelist").scrollTop();
                    p(), e("#" + f + "_filelist").scrollTop(t);
                }), u.bind("FileUploaded", function(e, t) {
                    c(t);
                }), u.bind("UploadProgress", function(t, n) {
                    e("#" + n.id + " div.plupload_file_status", a).html(n.percent + "%"), c(n), h();
                }), s.setup && s.setup(u);
            }), this) : n[e(this[0]).attr("id")];
        };
    })(jQuery, mOxie);
});